Fixed consistent map event listener remove
Change-Id: I8e73faa31353929fe2a7b4c85923f64abaf5e497
Showing
2 changed files
with
5 additions
and
4 deletions
| ... | @@ -185,7 +185,7 @@ public class DefaultConsistentMap<K, V> extends Synchronous<AsyncConsistentMap<K | ... | @@ -185,7 +185,7 @@ public class DefaultConsistentMap<K, V> extends Synchronous<AsyncConsistentMap<K |
| 185 | 185 | ||
| 186 | @Override | 186 | @Override |
| 187 | public void removeListener(MapEventListener<K, V> listener) { | 187 | public void removeListener(MapEventListener<K, V> listener) { |
| 188 | - complete(asyncMap.addListener(listener)); | 188 | + complete(asyncMap.removeListener(listener)); |
| 189 | } | 189 | } |
| 190 | 190 | ||
| 191 | @Override | 191 | @Override | ... | ... |
| ... | @@ -21,6 +21,7 @@ import java.util.Map; | ... | @@ -21,6 +21,7 @@ import java.util.Map; |
| 21 | import java.util.Map.Entry; | 21 | import java.util.Map.Entry; |
| 22 | import java.util.Set; | 22 | import java.util.Set; |
| 23 | import java.util.concurrent.CompletableFuture; | 23 | import java.util.concurrent.CompletableFuture; |
| 24 | +import java.util.concurrent.Executor; | ||
| 24 | import java.util.function.BiFunction; | 25 | import java.util.function.BiFunction; |
| 25 | import java.util.function.Function; | 26 | import java.util.function.Function; |
| 26 | import java.util.function.Predicate; | 27 | import java.util.function.Predicate; |
| ... | @@ -224,12 +225,12 @@ public class MeteredAsyncConsistentMap<K, V> extends DelegatingAsyncConsistentM | ... | @@ -224,12 +225,12 @@ public class MeteredAsyncConsistentMap<K, V> extends DelegatingAsyncConsistentM |
| 224 | } | 225 | } |
| 225 | 226 | ||
| 226 | @Override | 227 | @Override |
| 227 | - public CompletableFuture<Void> addListener(MapEventListener<K, V> listener) { | 228 | + public CompletableFuture<Void> addListener(MapEventListener<K, V> listener, Executor executor) { |
| 228 | final MeteringAgent.Context timer = monitor.startTimer(ADD_LISTENER); | 229 | final MeteringAgent.Context timer = monitor.startTimer(ADD_LISTENER); |
| 229 | synchronized (listeners) { | 230 | synchronized (listeners) { |
| 230 | InternalMeteredMapEventListener meteredListener = | 231 | InternalMeteredMapEventListener meteredListener = |
| 231 | listeners.computeIfAbsent(listener, k -> new InternalMeteredMapEventListener(listener)); | 232 | listeners.computeIfAbsent(listener, k -> new InternalMeteredMapEventListener(listener)); |
| 232 | - return super.addListener(meteredListener) | 233 | + return super.addListener(meteredListener, executor) |
| 233 | .whenComplete((r, e) -> timer.stop(e)); | 234 | .whenComplete((r, e) -> timer.stop(e)); |
| 234 | } | 235 | } |
| 235 | } | 236 | } |
| ... | @@ -239,7 +240,7 @@ public class MeteredAsyncConsistentMap<K, V> extends DelegatingAsyncConsistentM | ... | @@ -239,7 +240,7 @@ public class MeteredAsyncConsistentMap<K, V> extends DelegatingAsyncConsistentM |
| 239 | final MeteringAgent.Context timer = monitor.startTimer(REMOVE_LISTENER); | 240 | final MeteringAgent.Context timer = monitor.startTimer(REMOVE_LISTENER); |
| 240 | InternalMeteredMapEventListener meteredListener = listeners.remove(listener); | 241 | InternalMeteredMapEventListener meteredListener = listeners.remove(listener); |
| 241 | if (meteredListener != null) { | 242 | if (meteredListener != null) { |
| 242 | - return super.removeListener(listener) | 243 | + return super.removeListener(meteredListener) |
| 243 | .whenComplete((r, e) -> timer.stop(e)); | 244 | .whenComplete((r, e) -> timer.stop(e)); |
| 244 | } else { | 245 | } else { |
| 245 | timer.stop(null); | 246 | timer.stop(null); | ... | ... |
-
Please register or login to post a comment