Hi,
just looking at MemoryChunk for various reasons.
What I did not realize is that when no memory is currently available the 
implementation waits for memory to become available.The default wait time is 
10s.

This seems very dangerous to me. This can hang HBase handler threads at various 
points, especially when Phoenix is "busy" (I realize we're not talking about 
real memory here, but the effect is still that the HBase server threads would 
stall).
HBase was designed with the assumption that individual RPCs do not tie up a 
handler thread for long. (The worst offender is a scan RPC that could scan up 
to a region's worth if a highly selective filter was passed). It's also 
possible that this is mostly used in asynchronous processing, although a quick 
scan of the code suggests that's not the case.

It's possible that I'm missing something (in which case someone enlighten me 
please). I feel with wait time should be set to 0. I.e. we check whether 
there's memory available right now, if not we just fail the request and free 
the handler thread. I'd even argue we can remove the wait/synchronization code 
completely from MemoryChunk.

Comments?
-- Lars

Reply via email to