> It hits an OOM.
To add a little more colour because I stepped through this with someone the 
other day.

When memtables are not removed from the memtable flush queue (because they have 
not been written) the queue will fill up. When this happens the flush process 
will block trying to fill the queue, and will hold the internal switch lock 
used to syncronise around the commit log. This will prevent write threads from 
progressing. All the while writes will continue to be delivered to the node and 
the Mutation thread pool queue will fill. 

All of this results in extreme memory pressure, the JVM will spend a lot of 
time running GC to try and free some space. While all the GC is going on 
chances are the other nodes will see the failing node ad flapping as it fails 
to keep up with gossip. None of this will work and eventually the JVM will 
raise an OOM error that is normally trapped and results in the node trying to 
shut down. During the shutdown process it will try to disable the rpc / native 
transports and gossip.

It's a simple thing to test and a useful example to walk through (by looking at 
the logs) with an Ops team if they are just starting out. 

Cheers
 
-----------------
Aaron Morton
Freelance Cassandra Consultant
New Zealand

@aaronmorton
http://www.thelastpickle.com

On 10/07/2013, at 5:36 AM, Robert Coli <rc...@eventbrite.com> wrote:

> On Mon, Jul 8, 2013 at 5:58 PM, Faraaz Sareshwala <fsareshw...@quantcast.com> 
> wrote:
> What does cassandra do when it is at its data capacity (disk drives and 
> memtable
> is full) and writes continue to pour in? My intuition says that cassandra 
> won't
> be able to handle the new writes (they will either get silently dropped or
> cassandra will hit an OOM -- does anyone know which one?). The sstables on 
> disk
> won't magically disappear so cassandra won't be able to service the write
> requests.
> 
> It hits an OOM.
> 
> =Rob
>  

Reply via email to