aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2022-03-09 14:54:14 +0100
committerGitHub <noreply@github.com>2022-03-09 14:54:14 +0100
commit4f46b3a7d1c084bc3627b3137be70d2ca48a538f (patch)
tree9a79a11b917fbc1aef8f5adba10f2c4dd1dc1000
parenta36eb374409dc7b1b0d75936907d5a77d9a6a3eb (diff)
parentac449aa8d3e4b22a4ae742a5dfa15e59fb641abf (diff)
Merge pull request #21608 from vespa-engine/jonmv/deconstruct-curators
Close Curator instances
-rw-r--r--clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingCurator.java9
-rw-r--r--clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMaintainer.java4
-rw-r--r--clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/http/ReindexingV1ApiHandler.java6
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java9
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
*/