summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2017-09-20 16:20:37 +0200
committerValerij Fredriksen <valerijf@oath.com>2017-09-22 09:13:01 +0200
commit3fc5f927b0f8cd617fda1fa6682da86033338f39 (patch)
tree9fb8fe6835e0ab704880a470fd7b51e4398a0508
parentab9a46fd9163b2cbec7811ef6e1e405685da269d (diff)
Start schedulers in start()
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java16
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java30
2 files changed, 24 insertions, 22 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java
index 5adcc1d3e9c..d5810f14ea2 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java
@@ -51,9 +51,10 @@ public class NodeAdminStateUpdater {
private Thread loopThread;
private final NodeRepository nodeRepository;
+ private final Orchestrator orchestrator;
+ private final StorageMaintainer storageMaintainer;
private final NodeAdmin nodeAdmin;
private final Clock clock;
- private final Orchestrator orchestrator;
private final String dockerHostHostName;
private final Duration nodeAdminConvergeStateInterval;
@@ -70,14 +71,12 @@ public class NodeAdminStateUpdater {
log.log(LogLevel.INFO, objectToString() + ": Creating object");
this.nodeRepository = nodeRepository;
this.orchestrator = orchestrator;
+ this.storageMaintainer = storageMaintainer;
this.nodeAdmin = nodeAdmin;
this.dockerHostHostName = dockerHostHostName;
this.clock = clock;
this.nodeAdminConvergeStateInterval = nodeAdminConvergeStateInterval;
this.lastTick = clock.instant();
-
- specVerifierScheduler.scheduleWithFixedDelay(() ->
- updateHardwareDivergence(storageMaintainer), 5, 60, TimeUnit.MINUTES);
}
private String objectToString() {
@@ -272,6 +271,9 @@ public class NodeAdminStateUpdater {
});
loopThread.setName("tick-NodeAdminStateUpdater");
loopThread.start();
+
+ specVerifierScheduler.scheduleWithFixedDelay(() ->
+ updateHardwareDivergence(storageMaintainer), 5, 60, TimeUnit.MINUTES);
}
public void stop() {
@@ -279,14 +281,14 @@ public class NodeAdminStateUpdater {
if (!terminated.compareAndSet(false, true)) {
throw new RuntimeException("Can not re-stop a node agent.");
}
- log.log(LogLevel.INFO, objectToString() + ": Deconstruct called");
+ log.log(LogLevel.INFO, objectToString() + ": Stop called");
// First we need to stop NodeAdminStateUpdater thread to make sure no new NodeAgents are spawned
signalWorkToBeDone();
do {
try {
- loopThread.join(0);
+ loopThread.join();
specVerifierScheduler.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e1) {
log.info("Interrupted while waiting for NodeAdminStateUpdater thread and specVerfierScheduler to shutdown");
@@ -295,6 +297,6 @@ public class NodeAdminStateUpdater {
// Finally, stop NodeAdmin and all the NodeAgents
nodeAdmin.stop();
- log.log(LogLevel.INFO, objectToString() + ": Deconstruct complete");
+ log.log(LogLevel.INFO, objectToString() + ": Stop complete");
}
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
index d0c8b3b3837..77348a9dc45 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
@@ -85,7 +85,7 @@ public class NodeAgentImpl implements NodeAgent {
private final ScheduledExecutorService filebeatRestarter =
Executors.newScheduledThreadPool(1, ThreadFactoryFactory.getDaemonThreadFactory("filebeatrestarter"));
- private final Consumer<String> serviceRestarter;
+ private Consumer<String> serviceRestarter;
private Future<?> currentFilebeatRestarter;
private boolean resumeScriptRun = false;
@@ -131,19 +131,6 @@ public class NodeAgentImpl implements NodeAgent {
this.clock = clock;
this.timeBetweenEachConverge = timeBetweenEachConverge;
this.lastConverge = clock.instant();
-
- this.serviceRestarter = service -> {
- try {
- ProcessResult processResult = dockerOperations.executeCommandInContainerAsRoot(
- containerName, "service", service, "restart");
-
- if (!processResult.isSuccess()) {
- logger.error("Failed to restart service " + service + ": " + processResult);
- }
- } catch (Exception e) {
- logger.error("Failed to restart service " + service, e);
- }
- };
}
@Override
@@ -200,6 +187,19 @@ public class NodeAgentImpl implements NodeAgent {
});
loopThread.setName("tick-" + hostname);
loopThread.start();
+
+ serviceRestarter = service -> {
+ try {
+ ProcessResult processResult = dockerOperations.executeCommandInContainerAsRoot(
+ containerName, "service", service, "restart");
+
+ if (!processResult.isSuccess()) {
+ logger.error("Failed to restart service " + service + ": " + processResult);
+ }
+ } catch (Exception e) {
+ logger.error("Failed to restart service " + service, e);
+ }
+ };
}
@Override
@@ -213,7 +213,7 @@ public class NodeAgentImpl implements NodeAgent {
do {
try {
- loopThread.join(0);
+ loopThread.join();
filebeatRestarter.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
logger.error("Interrupted while waiting for converge thread and filebeatRestarter scheduler to shutdown");