diff options
Diffstat (limited to 'node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java')
-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() { |