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: [email protected]
For additional commands, e-mail: [email protected]