Committed by
Yuta Higuchi
Fix Cache Removal listener
- Removal lister will be called even if the entry was manually invalidated. Timeout handler should check for the cause. Note: In both of the cases fixed in this patch, Future should silently ignore setException, external behavior-wise no change by this patch. Change-Id: Id46f23c9ff8dfa607874cfd94807000f03a95b31
Showing
2 changed files
with
7 additions
and
3 deletions
| ... | @@ -312,9 +312,11 @@ public class SimpleFlowRuleStore | ... | @@ -312,9 +312,11 @@ public class SimpleFlowRuleStore |
| 312 | @Override | 312 | @Override |
| 313 | public void onRemoval(RemovalNotification<Integer, SettableFuture<CompletedBatchOperation>> notification) { | 313 | public void onRemoval(RemovalNotification<Integer, SettableFuture<CompletedBatchOperation>> notification) { |
| 314 | // wrapping in ExecutionException to support Future.get | 314 | // wrapping in ExecutionException to support Future.get |
| 315 | - notification.getValue() | 315 | + if (notification.wasEvicted()) { |
| 316 | - .setException(new ExecutionException("Timed out", | 316 | + notification.getValue() |
| 317 | + .setException(new ExecutionException("Timed out", | ||
| 317 | new TimeoutException())); | 318 | new TimeoutException())); |
| 319 | + } | ||
| 318 | } | 320 | } |
| 319 | } | 321 | } |
| 320 | } | 322 | } | ... | ... |
| ... | @@ -72,7 +72,9 @@ public class NettyMessagingService implements MessagingService { | ... | @@ -72,7 +72,9 @@ public class NettyMessagingService implements MessagingService { |
| 72 | .removalListener(new RemovalListener<Long, SettableFuture<byte[]>>() { | 72 | .removalListener(new RemovalListener<Long, SettableFuture<byte[]>>() { |
| 73 | @Override | 73 | @Override |
| 74 | public void onRemoval(RemovalNotification<Long, SettableFuture<byte[]>> entry) { | 74 | public void onRemoval(RemovalNotification<Long, SettableFuture<byte[]>> entry) { |
| 75 | - entry.getValue().setException(new TimeoutException("Timedout waiting for reply")); | 75 | + if (entry.wasEvicted()) { |
| 76 | + entry.getValue().setException(new TimeoutException("Timedout waiting for reply")); | ||
| 77 | + } | ||
| 76 | } | 78 | } |
| 77 | }) | 79 | }) |
| 78 | .build(); | 80 | .build(); | ... | ... |
-
Please register or login to post a comment