You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Todd Lipcon (JIRA)" <ji...@apache.org> on 2018/09/05 20:09:00 UTC

[jira] [Created] (IMPALA-7534) Handle invalidation races in CatalogdMetaProvider cache

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)