Use WatcherRemoveCuratorFramework in a few more places
Project: http://git-wip-us.apache.org/repos/asf/curator/repo Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/a95d52e5 Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/a95d52e5 Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/a95d52e5 Branch: refs/heads/CURATOR-3.0 Commit: a95d52e53ef0fc63468eb1fc257869c82bd3dc4e Parents: eba6ce8 Author: randgalt <[email protected]> Authored: Tue May 19 20:01:26 2015 -0700 Committer: randgalt <[email protected]> Committed: Tue May 19 20:01:26 2015 -0700 ---------------------------------------------------------------------- .../apache/curator/framework/recipes/leader/LeaderLatch.java | 6 ++++-- .../framework/recipes/nodes/PersistentEphemeralNode.java | 6 ++++-- .../apache/curator/framework/recipes/queue/ChildrenCache.java | 6 ++++-- .../apache/curator/framework/recipes/shared/SharedValue.java | 6 ++++-- 4 files changed, 16 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/curator/blob/a95d52e5/curator-recipes/src/main/java/org/apache/curator/framework/recipes/leader/LeaderLatch.java ---------------------------------------------------------------------- diff --git a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/leader/LeaderLatch.java b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/leader/LeaderLatch.java index 40d92e4..8d2d0f0 100644 --- a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/leader/LeaderLatch.java +++ b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/leader/LeaderLatch.java @@ -23,6 +23,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.base.Preconditions; import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.WatcherRemoveCuratorFramework; import org.apache.curator.framework.api.BackgroundCallback; import org.apache.curator.framework.api.CuratorEvent; import org.apache.curator.framework.listen.ListenerContainer; @@ -63,7 +64,7 @@ import org.apache.curator.utils.PathUtils; public class LeaderLatch implements Closeable { private final Logger log = LoggerFactory.getLogger(getClass()); - private final CuratorFramework client; + private final WatcherRemoveCuratorFramework client; private final String latchPath; private final String id; private final AtomicReference<State> state = new AtomicReference<State>(State.LATENT); @@ -143,7 +144,7 @@ public class LeaderLatch implements Closeable */ public LeaderLatch(CuratorFramework client, String latchPath, String id, CloseMode closeMode) { - this.client = Preconditions.checkNotNull(client, "client cannot be null"); + this.client = Preconditions.checkNotNull(client, "client cannot be null").newWatcherRemoveCuratorFramework(); this.latchPath = PathUtils.validatePath(latchPath); this.id = Preconditions.checkNotNull(id, "id cannot be null"); this.closeMode = Preconditions.checkNotNull(closeMode, "closeMode cannot be null"); @@ -206,6 +207,7 @@ public class LeaderLatch implements Closeable try { setNode(null); + client.removeWatchers(); } catch ( Exception e ) { http://git-wip-us.apache.org/repos/asf/curator/blob/a95d52e5/curator-recipes/src/main/java/org/apache/curator/framework/recipes/nodes/PersistentEphemeralNode.java ---------------------------------------------------------------------- diff --git a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/nodes/PersistentEphemeralNode.java b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/nodes/PersistentEphemeralNode.java index d78573c..3bad8e3 100644 --- a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/nodes/PersistentEphemeralNode.java +++ b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/nodes/PersistentEphemeralNode.java @@ -21,6 +21,7 @@ package org.apache.curator.framework.recipes.nodes; import com.google.common.base.Preconditions; import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.WatcherRemoveCuratorFramework; import org.apache.curator.framework.api.ACLBackgroundPathAndBytesable; import org.apache.curator.framework.api.BackgroundCallback; import org.apache.curator.framework.api.CreateModable; @@ -54,7 +55,7 @@ public class PersistentEphemeralNode implements Closeable { private final AtomicReference<CountDownLatch> initialCreateLatch = new AtomicReference<CountDownLatch>(new CountDownLatch(1)); private final Logger log = LoggerFactory.getLogger(getClass()); - private final CuratorFramework client; + private final WatcherRemoveCuratorFramework client; private final CreateModable<ACLBackgroundPathAndBytesable<String>> createMethod; private final AtomicReference<String> nodePath = new AtomicReference<String>(null); private final String basePath; @@ -190,7 +191,7 @@ public class PersistentEphemeralNode implements Closeable */ public PersistentEphemeralNode(CuratorFramework client, Mode mode, String basePath, byte[] data) { - this.client = Preconditions.checkNotNull(client, "client cannot be null"); + this.client = Preconditions.checkNotNull(client, "client cannot be null").newWatcherRemoveCuratorFramework(); this.basePath = PathUtils.validatePath(basePath); this.mode = Preconditions.checkNotNull(mode, "mode cannot be null"); data = Preconditions.checkNotNull(data, "data cannot be null"); @@ -268,6 +269,7 @@ public class PersistentEphemeralNode implements Closeable return; } + client.removeWatchers(); client.getConnectionStateListenable().removeListener(connectionStateListener); try http://git-wip-us.apache.org/repos/asf/curator/blob/a95d52e5/curator-recipes/src/main/java/org/apache/curator/framework/recipes/queue/ChildrenCache.java ---------------------------------------------------------------------- diff --git a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/queue/ChildrenCache.java b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/queue/ChildrenCache.java index 032dc7a..e5c7e8c 100644 --- a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/queue/ChildrenCache.java +++ b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/queue/ChildrenCache.java @@ -21,6 +21,7 @@ package org.apache.curator.framework.recipes.queue; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.WatcherRemoveCuratorFramework; import org.apache.curator.framework.api.BackgroundCallback; import org.apache.curator.framework.api.CuratorEvent; import org.apache.curator.framework.api.CuratorWatcher; @@ -36,7 +37,7 @@ import org.apache.curator.utils.PathUtils; class ChildrenCache implements Closeable { - private final CuratorFramework client; + private final WatcherRemoveCuratorFramework client; private final String path; private final AtomicReference<Data> children = new AtomicReference<Data>(new Data(Lists.<String>newArrayList(), 0)); private final AtomicBoolean isClosed = new AtomicBoolean(false); @@ -79,7 +80,7 @@ class ChildrenCache implements Closeable ChildrenCache(CuratorFramework client, String path) { - this.client = client; + this.client = client.newWatcherRemoveCuratorFramework(); this.path = PathUtils.validatePath(path); } @@ -91,6 +92,7 @@ class ChildrenCache implements Closeable @Override public void close() throws IOException { + client.removeWatchers(); isClosed.set(true); notifyFromCallback(); } http://git-wip-us.apache.org/repos/asf/curator/blob/a95d52e5/curator-recipes/src/main/java/org/apache/curator/framework/recipes/shared/SharedValue.java ---------------------------------------------------------------------- diff --git a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/shared/SharedValue.java b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/shared/SharedValue.java index 6ca53ec..7e7ad56 100644 --- a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/shared/SharedValue.java +++ b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/shared/SharedValue.java @@ -22,6 +22,7 @@ package org.apache.curator.framework.recipes.shared; import com.google.common.base.Function; import com.google.common.base.Preconditions; import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.WatcherRemoveCuratorFramework; import org.apache.curator.framework.api.CuratorWatcher; import org.apache.curator.framework.listen.ListenerContainer; import org.apache.curator.framework.state.ConnectionState; @@ -45,7 +46,7 @@ public class SharedValue implements Closeable, SharedValueReader { private final Logger log = LoggerFactory.getLogger(getClass()); private final ListenerContainer<SharedValueListener> listeners = new ListenerContainer<SharedValueListener>(); - private final CuratorFramework client; + private final WatcherRemoveCuratorFramework client; private final String path; private final byte[] seedValue; private final AtomicReference<State> state = new AtomicReference<State>(State.LATENT); @@ -87,7 +88,7 @@ public class SharedValue implements Closeable, SharedValueReader */ public SharedValue(CuratorFramework client, String path, byte[] seedValue) { - this.client = client; + this.client = client.newWatcherRemoveCuratorFramework(); this.path = PathUtils.validatePath(path); this.seedValue = Arrays.copyOf(seedValue, seedValue.length); currentValue = new AtomicReference<VersionedValue<byte[]>>(new VersionedValue<byte[]>(0, Arrays.copyOf(seedValue, seedValue.length))); @@ -233,6 +234,7 @@ public class SharedValue implements Closeable, SharedValueReader @Override public void close() throws IOException { + client.removeWatchers(); client.getConnectionStateListenable().removeListener(connectionStateListener); state.set(State.CLOSED); listeners.clear();
