diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2017-09-22 20:13:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-22 20:13:05 +0200 |
commit | 1c00bc4432007b58be9c761e89452ae5381c6314 (patch) | |
tree | d26035d33b2f4f0c839b09633461cd33d7c08db0 | |
parent | b4b8e80f1ea922c2213e36a6d9221a3401cdfee9 (diff) | |
parent | 45416bb7cc9b2ce448f3cb5fde1ba2e24492b9bc (diff) |
Merge pull request #3505 from vespa-engine/revert-3504-freva/disable-node-admin-locks
Revert "Remove node-admin locks"
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java index 7a63bf05264..5536ee1551b 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java @@ -2,6 +2,8 @@ package com.yahoo.vespa.hosted.node.admin.provider; import com.google.inject.Inject; +import com.yahoo.concurrent.lock.Lock; +import com.yahoo.concurrent.lock.Locking; import com.yahoo.container.di.componentgraph.Provider; import com.yahoo.log.LogLevel; import com.yahoo.net.HostName; @@ -44,11 +46,15 @@ public class NodeAdminProvider implements Provider<NodeAdminStateUpdater> { private final Logger log = Logger.getLogger(NodeAdminProvider.class.getName()); private final NodeAdminStateUpdater nodeAdminStateUpdater; + private final Lock classLock; @Inject - public NodeAdminProvider(Docker docker, MetricReceiverWrapper metricReceiver) { - log.log(LogLevel.INFO, objectToString() + ": Creating object"); + public NodeAdminProvider(Docker docker, MetricReceiverWrapper metricReceiver, Locking locking) { + log.log(LogLevel.INFO, objectToString() + ": Creating object, acquiring lock..."); + classLock = locking.lock(this.getClass()); try { + log.log(LogLevel.INFO, objectToString() + ": Lock acquired"); + Clock clock = Clock.systemUTC(); String dockerHostHostName = HostName.getLocalhost(); ProcessExecuter processExecuter = new ProcessExecuter(); @@ -72,6 +78,7 @@ public class NodeAdminProvider implements Provider<NodeAdminStateUpdater> { dockerHostHostName, clock, NODE_ADMIN_CONVERGE_STATE_INTERVAL); nodeAdminStateUpdater.start(); } catch (Exception e) { + classLock.close(); throw e; } } @@ -87,6 +94,9 @@ public class NodeAdminProvider implements Provider<NodeAdminStateUpdater> { nodeAdminStateUpdater.stop(); log.log(LogLevel.INFO, objectToString() + ": Stop complete"); + + classLock.close(); + log.log(LogLevel.INFO, objectToString() + ": Lock released"); } private String objectToString() { |