I was running a Fluo test application and profiling the tablet server and Fluo worker. The Fluo worker does lots small scans against Accumulo. Resolving table names to ids (which is done for each scan) was expensive enough to make a significant showing in the profiling data.
I looked that the 1.8 code and it does the following to resolve a table name :
- reads over all cached table ids in zookeeper putting them in a treemap
- does a lookup in the treemap
Ideally the client code would keep a cache of name to id mappings and invalidate them when something changes in zookeeper. The data in zookeeper is stored by id, so it does need to be inverted to lookup by name.