diff options
author | HÃ¥kon Hallingstad <hakon.hallingstad@gmail.com> | 2023-03-22 12:29:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-22 12:29:03 +0100 |
commit | e82304752fb663ad7c34c521617f8a4911759c2e (patch) | |
tree | f995ce5499c0c3e96d7d080142bd84732bc2e4f8 | |
parent | 39ef03dbfea4665dbe06b187d8d9d19d65e6d660 (diff) | |
parent | a7d964aa8a658acd99fbf3a4d99bf86d3d33b03d (diff) |
Merge pull request #26524 from vespa-engine/hmusum/configserver-cleanup-6
Specify barrier wait for all timeout in callers, simplify
5 files changed, 17 insertions, 21 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java index 120eb967a73..b617ea71881 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java @@ -36,6 +36,7 @@ import com.yahoo.vespa.curator.transaction.CuratorOperations; import com.yahoo.vespa.curator.transaction.CuratorTransaction; import org.apache.zookeeper.data.Stat; import java.security.cert.X509Certificate; +import java.time.Duration; import java.time.Instant; import java.util.List; import java.util.Optional; @@ -68,6 +69,8 @@ public class SessionZooKeeperClient { private static final String OPERATOR_CERTIFICATES_PATH = "operatorCertificates"; private static final String CLOUD_ACCOUNT_PATH = "cloudAccount"; + private static final Duration barrierWaitForAll = Duration.ofSeconds(1); + private final Curator curator; private final TenantName tenantName; private final long sessionId; @@ -133,11 +136,11 @@ public class SessionZooKeeperClient { } private CompletionWaiter createCompletionWaiter(String waiterNode) { - return curator.createCompletionWaiter(sessionPath, waiterNode, serverId); + return curator.createCompletionWaiter(sessionPath, waiterNode, serverId, barrierWaitForAll); } private CompletionWaiter getCompletionWaiter(Path path) { - return curator.getCompletionWaiter(path, serverId); + return curator.getCompletionWaiter(path, serverId, barrierWaitForAll); } /** Returns a transaction deleting this session on commit */ 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 9a7dd469fa1..2781e81cd7c 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java @@ -173,12 +173,12 @@ public class Curator extends AbstractComponent implements AutoCloseable { }); } - public CompletionWaiter getCompletionWaiter(Path waiterPath, String id) { - return CuratorCompletionWaiter.create(this, waiterPath, id); + public CompletionWaiter getCompletionWaiter(Path waiterPath, String id, Duration waitForAll) { + return CuratorCompletionWaiter.create(this, waiterPath, id, waitForAll); } - public CompletionWaiter createCompletionWaiter(Path parentPath, String waiterNode, String id) { - return CuratorCompletionWaiter.createAndInitialize(this, parentPath, waiterNode, id); + public CompletionWaiter createCompletionWaiter(Path parentPath, String waiterNode, String id, Duration waitForAll) { + return CuratorCompletionWaiter.createAndInitialize(this, parentPath, waiterNode, 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 8df37d1f6ce..5a3d6668231 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java @@ -21,7 +21,6 @@ import java.util.logging.Level; class CuratorCompletionWaiter implements Curator.CompletionWaiter { private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(CuratorCompletionWaiter.class.getName()); - private static final Duration waitForAllDefault = Duration.ofSeconds(1); // Make this configurable? private final Curator curator; private final String barrierPath; @@ -121,18 +120,10 @@ class CuratorCompletionWaiter implements Curator.CompletionWaiter { return "'" + barrierPath + "', " + barrierMemberCount() + " members"; } - public static Curator.CompletionWaiter create(Curator curator, Path barrierPath, String id) { - return create(curator, barrierPath, id, waitForAllDefault); - } - public static Curator.CompletionWaiter create(Curator curator, Path barrierPath, String id, Duration waitForAll) { return new CuratorCompletionWaiter(curator, barrierPath.getAbsolute(), id, Clock.systemUTC(), waitForAll); } - public static Curator.CompletionWaiter createAndInitialize(Curator curator, Path parentPath, String waiterNode, String id) { - return createAndInitialize(curator, parentPath, waiterNode, id, waitForAllDefault); - } - public static Curator.CompletionWaiter createAndInitialize(Curator curator, Path parentPath, String waiterNode, String id, Duration waitForAll) { Path waiterPath = parentPath.append(waiterNode); 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 5ebd33801ed..e578746d348 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 @@ -6,7 +6,7 @@ import com.yahoo.path.Path; import com.yahoo.vespa.curator.Curator; import org.apache.curator.framework.recipes.atomic.DistributedAtomicLong; import org.apache.curator.framework.recipes.locks.InterProcessLock; - +import java.time.Duration; import java.util.Optional; import java.util.concurrent.ExecutorService; @@ -82,12 +82,12 @@ public class MockCurator extends Curator { } @Override - public CompletionWaiter getCompletionWaiter(Path parentPath, String id) { + public CompletionWaiter getCompletionWaiter(Path parentPath, String id, Duration waitForAll) { return mockFramework().createCompletionWaiter(); } @Override - public CompletionWaiter createCompletionWaiter(Path parentPath, String waiterNode, String id) { + public CompletionWaiter createCompletionWaiter(Path parentPath, String waiterNode, 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 8b635d2efdf..dbdb14b9214 100644 --- a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCompletionWaiterTest.java +++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCompletionWaiterTest.java @@ -14,11 +14,13 @@ import static org.junit.Assert.fail; */ public class CuratorCompletionWaiterTest { + private static final Duration waitForAll = Duration.ofSeconds(1); + @Test public void testCompletionWaiter() throws InterruptedException { Curator curator = new MockCurator(); - Curator.CompletionWaiter waiter = CuratorCompletionWaiter.createAndInitialize(curator, Path.createRoot(), "foo", "foo"); - Curator.CompletionWaiter notifier = CuratorCompletionWaiter.create(curator, Path.fromString("/foo"), "bar"); + Curator.CompletionWaiter waiter = CuratorCompletionWaiter.createAndInitialize(curator, Path.createRoot(), "foo", "foo", waitForAll); + Curator.CompletionWaiter notifier = CuratorCompletionWaiter.create(curator, Path.fromString("/foo"), "bar", waitForAll); Thread t1 = new Thread(() -> { try { waiter.awaitCompletion(Duration.ofSeconds(120)); @@ -34,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"); + Curator.CompletionWaiter waiter = CuratorCompletionWaiter.createAndInitialize(curator, Path.createRoot(), "foo", "foo", waitForAll); waiter.awaitCompletion(Duration.ofMillis(100)); } } |