Jon Meredith created CASSANDRA-14832:
----------------------------------------

             Summary: Other threads can take all newly allocated BufferPool 
chunks before original and cause reallocation
                 Key: CASSANDRA-14832
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14832
             Project: Cassandra
          Issue Type: Improvement
            Reporter: Jon Meredith


When BufferPool does not have any free Chunks to satisfy a request, the calling 
thread allocates a new large block of memory which it breaks up into chunks and 
adds to the free chunks queue, then pulls from the queue to satisfy it's own 
allocation.

If enough other threads request chunks it is possible for the queue to be 
exhausted before the original allocating thread is able to pull of it's own 
allocation, causing the original allocator to loop and attempt to allocate more 
memory.  This is unfair to the original caller and may cause it to block on a 
system call to allocate more memory.

Instead of the current behavior, allocateMoreChunks could hold back one of the 
chunks and return it to the caller instead so that it will at most call 
allocate once.

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to