keith-turner opened a new pull request, #5431: URL: https://github.com/apache/accumulo/pull/5431
The client side tablet cache supports invalidating all entrires in the cache related a to tablet server. This is usually called when client code sees an unexpected exception on a server. There are two cases that could cause this. In one case the tablet server is healthy and something like a user iterator caused an exception. For this case invalidating everything in the cache related to the server may cause uneeded metadata reads. The other case is that the tablet server is unhealthy and any interaction with it will fail. In this case invalidating everything in the cache makes sense. However, until that unhealthy server no longer has tablet locations set in the metadata table, the optimization to clear all servers from the cache is not going to help overall. So clearing servers in the cache is sometimes harmful and probably not really helpful. Therefore this change removes the ability to clear everything for a server. The code that used to call this was modified to clear the extents it was trying to access on the server, instead of everything for the server. Another reason to remove server invalidation is the cache supports removing entries where the tserver no longer has a lock. This removal is lazy in that it happens when something tries to access the entry. This will efficiently remove everything for the server once its lock is gone. One nice benefit of this is that clearing extents from the cache is always fast because the cache is indexed by extent. However clearing a server required a full scan of the cache, which could be slow on a table with lots of tablets. -- 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]
