Accumulo has a pool of recently opened connections to tablet servers. When connecting to tablet servers, this pool is checked first. The pool is built around a map of list. There are two problems with this pool :
- It has global lock around the map of list
- When trying to find a connection it does a linear search for a non reserved connection (this is per tablet server)
Could possibly move to a model of having a list of unreserved connections and a set of reserved connections per tablet server. Then to get a connection, could remove from the unreserved list and add to the reserved set. This would be a constant time operation.
For the locking, could move to a model of using a concurrent map and locking per tserver instead of locking the entire map.