Currently to invalid query cache, CacheService will either invoke cleanDataCache or cleanAllDataCache. Both methods will clear all of the query cache, which is very inefficient. In eBay PROD environment, there's around 400 cubing jobs per day, which means the query cache will be cleared very 4 minutes. Then we introduced a signature based cache invalidation strategy. The basic idea is as follows:
- Add a signature for SQLResponse, here we choose the cube last build time
- When fetch SQLResponse for cache, first check whether the signature is consistent. If not, this cached value is overdue and will be invalidate.