summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2017-09-22 20:13:05 +0200
committerGitHub <noreply@github.com>2017-09-22 20:13:05 +0200
commit1c00bc4432007b58be9c761e89452ae5381c6314 (patch)
treed26035d33b2f4f0c839b09633461cd33d7c08db0
parentb4b8e80f1ea922c2213e36a6d9221a3401cdfee9 (diff)
parent45416bb7cc9b2ce448f3cb5fde1ba2e24492b9bc (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.java14
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() {