diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-03-09 14:54:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-09 14:54:14 +0100 |
commit | 4f46b3a7d1c084bc3627b3137be70d2ca48a538f (patch) | |
tree | 9a79a11b917fbc1aef8f5adba10f2c4dd1dc1000 | |
parent | a36eb374409dc7b1b0d75936907d5a77d9a6a3eb (diff) | |
parent | ac449aa8d3e4b22a4ae742a5dfa15e59fb641abf (diff) |
Merge pull request #21608 from vespa-engine/jonmv/deconstruct-curators
Close Curator instances
4 files changed, 22 insertions, 6 deletions
diff --git a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingCurator.java b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingCurator.java index 44d729c802e..94b65a01e57 100644 --- a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingCurator.java +++ b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingCurator.java @@ -14,6 +14,8 @@ import com.yahoo.vespa.curator.Curator; import com.yahoo.vespa.curator.Lock; import com.yahoo.yolean.Exceptions; +import java.io.Closeable; +import java.io.IOException; import java.time.Duration; import java.time.Instant; import java.util.List; @@ -29,7 +31,7 @@ import static java.util.stream.Collectors.toUnmodifiableMap; * * @author jonmv */ -public class ReindexingCurator { +public class ReindexingCurator implements Closeable { private static final Logger log = Logger.getLogger(ReindexingCurator.class.getName()); @@ -94,6 +96,11 @@ public class ReindexingCurator { private Path statusPath(String clusterName) { return rootPath(clusterName).append("status"); } private Path lockPath(String clusterName) { return rootPath(clusterName).append("lock"); } + @Override + public void close() { + curator.close(); + } + private static class ReindexingSerializer { diff --git a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMaintainer.java b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMaintainer.java index a9642c591ea..afb491fa293 100644 --- a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMaintainer.java +++ b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMaintainer.java @@ -103,9 +103,9 @@ public class ReindexingMaintainer extends AbstractComponent { executor.awaitTermination(5, TimeUnit.SECONDS); // Give it 5s to complete gracefully. - curator.close(); // Close the underlying curator independently to force shutdown + curator.close(); // Close the underlying curator independently to force shutdown. - if ( !executor.isShutdown() && ! executor.awaitTermination(5, TimeUnit.SECONDS)) + if ( ! executor.isShutdown() && ! executor.awaitTermination(5, TimeUnit.SECONDS)) log.log(WARNING, "Failed to shut down reindexing within timeout"); } catch (InterruptedException e) { diff --git a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/http/ReindexingV1ApiHandler.java b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/http/ReindexingV1ApiHandler.java index 8d9d21999d5..7816686221b 100644 --- a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/http/ReindexingV1ApiHandler.java +++ b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/http/ReindexingV1ApiHandler.java @@ -65,6 +65,11 @@ public class ReindexingV1ApiHandler extends ThreadedHttpRequestHandler { return ErrorResponse.notFoundError("Nothing at " + request.getUri().getRawPath()); } + @Override + public void destroy() { + database.close(); + } + HttpResponse getRoot() { Slime slime = new Slime(); slime.setObject().setArray("resources").addObject().setString("url", "/reindexing/v1/status"); @@ -88,7 +93,6 @@ public class ReindexingV1ApiHandler extends ThreadedHttpRequestHandler { return new SlimeJsonResponse(slime); } - private static String toString(Reindexing.State state) { switch (state) { case READY: return "pending"; 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 d226cfcd43e..2b5395773ee 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.curator; import com.google.inject.Inject; import com.yahoo.cloud.config.CuratorConfig; +import com.yahoo.component.AbstractComponent; import com.yahoo.path.Path; import com.yahoo.vespa.curator.api.VespaCurator; import com.yahoo.vespa.curator.recipes.CuratorCounter; @@ -49,7 +50,7 @@ import java.util.logging.Logger; * @author vegardh * @author bratseth */ -public class Curator implements VespaCurator, AutoCloseable { +public class Curator extends AbstractComponent implements VespaCurator, AutoCloseable { private static final Logger LOG = Logger.getLogger(Curator.class.getName()); private static final File ZK_CLIENT_CONFIG_FILE = new File(Defaults.getDefaults().underVespaHome("conf/zookeeper/zookeeper-client.cfg")); @@ -82,7 +83,6 @@ public class Curator implements VespaCurator, AutoCloseable { } @Inject - // TODO jonmv: Use a Provider for this, due to required shutdown. public Curator(CuratorConfig curatorConfig, @SuppressWarnings("unused") VespaZooKeeperServer server) { // Depends on ZooKeeperServer to make sure it is started first this(ConnectionSpec.create(curatorConfig.server(), @@ -316,6 +316,11 @@ public class Curator implements VespaCurator, AutoCloseable { curatorFramework.close(); } + @Override + public void deconstruct() { + close(); + } + /** * Interface for waiting for completion of an operation */ |