keith-turner opened a new pull request, #5311:
URL: https://github.com/apache/accumulo/pull/5311

   This is a draft change that contains the basic incomplete structure of a new 
highly concurrent tablet location cache.  For 2.1 this new implementation could 
be added along side the existing battle tested implementation with an option to 
use the new one.  The current structure with an abstract class for 
TabletLocator would make it easy to switch the implementation based on a client 
config property or java property.
   
   The current tablet location cache has read/write locks that accomplish two 
goals.
   
    1. Protect the integrity of an in memory tree map from concurrent updates.
    2. Avoids N threads doing N metadata lookups on a cache miss. The write 
lock in the code will usually result in a single metadata lookup in the case 
where many threads show up and want info from the same area of the metadata 
table.
   
   This changes replaces the tree map with a concurrent map, removing the need 
to have locks protecting the data structure.  Then it proposes a mechanism in 
`ConcurrentTabletLocator.requestLookup()` to attempt to avoid many concurrent 
metadata lookups for the same information.
   
   If this implementation were fleshed out, it seems like it may end up being 
much simpler than the existing cache.  The existing code has a lot of 
complexity related to first trying with a read lock and then switching to a 
write lock on cache miss, these changes do not have any of that complexity.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to