CachingAsyncConsistentMap: evict failed get responses from cache
AtomixLeaderElector: evict failed getLeadership responses from cache immediately Change-Id: I084abbe8f4669b98f85bc60dc6af9240630b7ce0 (cherry picked from commit 77012446)
Showing
2 changed files
with
12 additions
and
2 deletions
| ... | @@ -95,7 +95,12 @@ public class CachingAsyncConsistentMap<K, V> extends DelegatingAsyncConsistentMa | ... | @@ -95,7 +95,12 @@ public class CachingAsyncConsistentMap<K, V> extends DelegatingAsyncConsistentMa |
| 95 | 95 | ||
| 96 | @Override | 96 | @Override |
| 97 | public CompletableFuture<Versioned<V>> get(K key) { | 97 | public CompletableFuture<Versioned<V>> get(K key) { |
| 98 | - return cache.getUnchecked(key); | 98 | + return cache.getUnchecked(key) |
| 99 | + .whenComplete((r, e) -> { | ||
| 100 | + if (e != null) { | ||
| 101 | + cache.invalidate(key); | ||
| 102 | + } | ||
| 103 | + }); | ||
| 99 | } | 104 | } |
| 100 | 105 | ||
| 101 | @Override | 106 | @Override | ... | ... |
| ... | @@ -135,7 +135,12 @@ public class AtomixLeaderElector extends AbstractResource<AtomixLeaderElector> | ... | @@ -135,7 +135,12 @@ public class AtomixLeaderElector extends AbstractResource<AtomixLeaderElector> |
| 135 | 135 | ||
| 136 | @Override | 136 | @Override |
| 137 | public CompletableFuture<Leadership> getLeadership(String topic) { | 137 | public CompletableFuture<Leadership> getLeadership(String topic) { |
| 138 | - return cache.getUnchecked(topic); | 138 | + return cache.getUnchecked(topic) |
| 139 | + .whenComplete((r, e) -> { | ||
| 140 | + if (e != null) { | ||
| 141 | + cache.invalidate(topic); | ||
| 142 | + } | ||
| 143 | + }); | ||
| 139 | } | 144 | } |
| 140 | 145 | ||
| 141 | @Override | 146 | @Override | ... | ... |
-
Please register or login to post a comment