diff options
author | Harald Musum <musum@yahooinc.com> | 2023-09-18 09:06:06 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2023-09-18 09:06:06 +0200 |
commit | 51d97f62b16b5af66943633ef0880d9b2d314f95 (patch) | |
tree | 5451ec70aeef94d2f89870238c6580e709e34ab4 /zkfacade/src | |
parent | 4c498c4d0485565631cd6d30473dcfb73c73d211 (diff) |
Minor refactoring of CuratorCompletionWaiter, no functional changes
Diffstat (limited to 'zkfacade/src')
4 files changed, 9 insertions, 22 deletions
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java index 2781e81cd7c..80646dc5607 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java @@ -177,8 +177,8 @@ public class Curator extends AbstractComponent implements AutoCloseable { return CuratorCompletionWaiter.create(this, waiterPath, id, waitForAll); } - public CompletionWaiter createCompletionWaiter(Path parentPath, String waiterNode, String id, Duration waitForAll) { - return CuratorCompletionWaiter.createAndInitialize(this, parentPath, waiterNode, id, waitForAll); + public CompletionWaiter createCompletionWaiter(Path waiterPath, String id, Duration waitForAll) { + return CuratorCompletionWaiter.createAndInitialize(this, waiterPath, id, waitForAll); } /** Creates a listenable cache which keeps in sync with changes to all the immediate children of a path */ diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java index 5a3d6668231..420b049cc50 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java @@ -6,7 +6,6 @@ import com.yahoo.path.Path; import java.time.Clock; import java.time.Duration; import java.time.Instant; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -60,10 +59,9 @@ class CuratorCompletionWaiter implements Curator.CompletionWaiter { Instant endTime = startTime.plus(timeout); Instant gotQuorumTime = Instant.EPOCH; - List<String> respondents = new ArrayList<>(); + List<String> respondents; do { - respondents.clear(); - respondents.addAll(curator.framework().getChildren().forPath(barrierPath)); + respondents = (curator.framework().getChildren().forPath(barrierPath)); if (log.isLoggable(Level.FINER)) { log.log(Level.FINER, respondents.size() + "/" + curator.zooKeeperEnsembleCount() + " responded: " + respondents + ", all participants: " + curator.zooKeeperEnsembleConnectionSpec()); @@ -105,16 +103,12 @@ class CuratorCompletionWaiter implements Curator.CompletionWaiter { @Override public void notifyCompletion() { try { - notifyInternal(); + curator.framework().create().forPath(myId); } catch (Exception e) { throw new RuntimeException(e); } } - private void notifyInternal() throws Exception { - curator.framework().create().forPath(myId); - } - @Override public String toString() { return "'" + barrierPath + "', " + barrierMemberCount() + " members"; @@ -124,17 +118,10 @@ class CuratorCompletionWaiter implements Curator.CompletionWaiter { return new CuratorCompletionWaiter(curator, barrierPath.getAbsolute(), id, Clock.systemUTC(), waitForAll); } - public static Curator.CompletionWaiter createAndInitialize(Curator curator, Path parentPath, String waiterNode, String id, Duration waitForAll) { - Path waiterPath = parentPath.append(waiterNode); - - String debugMessage = log.isLoggable(Level.FINE) ? "Recreating ZK path " + waiterPath : null; - if (debugMessage != null) log.fine(debugMessage); - + public static Curator.CompletionWaiter createAndInitialize(Curator curator, Path waiterPath, String id, Duration waitForAll) { curator.delete(waiterPath); curator.createAtomically(waiterPath); - if (debugMessage != null) log.fine(debugMessage + ": Done"); - return new CuratorCompletionWaiter(curator, waiterPath.getAbsolute(), id, Clock.systemUTC(), waitForAll); } diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java index e578746d348..592b9fc2a05 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java @@ -87,7 +87,7 @@ public class MockCurator extends Curator { } @Override - public CompletionWaiter createCompletionWaiter(Path parentPath, String waiterNode, String id, Duration waitForAll) { + public CompletionWaiter createCompletionWaiter(Path waiterPath, String id, Duration waitForAll) { return mockFramework().createCompletionWaiter(); } diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCompletionWaiterTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCompletionWaiterTest.java index dbdb14b9214..17ec7fb65e9 100644 --- a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCompletionWaiterTest.java +++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCompletionWaiterTest.java @@ -19,7 +19,7 @@ public class CuratorCompletionWaiterTest { @Test public void testCompletionWaiter() throws InterruptedException { Curator curator = new MockCurator(); - Curator.CompletionWaiter waiter = CuratorCompletionWaiter.createAndInitialize(curator, Path.createRoot(), "foo", "foo", waitForAll); + Curator.CompletionWaiter waiter = CuratorCompletionWaiter.createAndInitialize(curator, Path.createRoot().append("foo"), "foo", waitForAll); Curator.CompletionWaiter notifier = CuratorCompletionWaiter.create(curator, Path.fromString("/foo"), "bar", waitForAll); Thread t1 = new Thread(() -> { try { @@ -36,7 +36,7 @@ public class CuratorCompletionWaiterTest { @Test(expected = CompletionTimeoutException.class) public void testCompletionWaiterFailure() { Curator curator = new MockCurator(); - Curator.CompletionWaiter waiter = CuratorCompletionWaiter.createAndInitialize(curator, Path.createRoot(), "foo", "foo", waitForAll); + Curator.CompletionWaiter waiter = CuratorCompletionWaiter.createAndInitialize(curator, Path.createRoot().append("foo"), "foo", waitForAll); waiter.awaitCompletion(Duration.ofMillis(100)); } } |