Hyunsun Moon

Fixed consistent map event listener remove

Change-Id: I8e73faa31353929fe2a7b4c85923f64abaf5e497
...@@ -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);
......