Todd Lipcon created IMPALA-7534:
-----------------------------------

             Summary: Handle invalidation races in CatalogdMetaProvider cache
                 Key: IMPALA-7534
                 URL: https://issues.apache.org/jira/browse/IMPALA-7534
             Project: IMPALA
          Issue Type: Sub-task
            Reporter: Todd Lipcon


There is a well-known race in Guava's LoadingCache that we are using for 
CatalogdMetaProvider which we are not currently handling:

- thread 1 gets a cache miss and makes a request to fetch some data from the 
catalogd. It fetches the catalog object with version 1 and then gets context 
switched out or otherwise slow
- thread 2 receives an invalidation for the same object, because it has changed 
to v2. It calls 'invalidate' on the cache, but nothing is yet cached.
- thread 1 puts back v1 of the object into the cache

In essence we've "missed" an invalidation. This is also described in this nice 
post: https://softwaremill.com/race-condition-cache-guava-caffeine/

The race is quite unlikely but could cause some unexpected results that are 
hard to reason about, so we should look into a fix.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to