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]