diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2017-09-20 16:20:37 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2017-09-22 22:17:53 +0200 |
commit | 80149b2c8a6cbfd132fa8ba520087b5e24af2f71 (patch) | |
tree | d176c96cfb1d40b698aa950fd15e12a8f1cc2de5 /node-admin | |
parent | 42ecb37b7bc20fc69cdd9cc2fc43dc34274058f4 (diff) |
Start schedulers in start()
Diffstat (limited to 'node-admin')
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"); |