summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon@verizonmedia.com>2020-10-06 09:49:53 +0200
committerGitHub <noreply@github.com>2020-10-06 09:49:53 +0200
commit5c4a0dab894a17b2a20a4e1b51b51d274c5c5265 (patch)
tree2df426a9cfc7f51129cfa6a0aa147d2909203278
parent35422b50c159c2430ce461999495a30c9a64ee94 (diff)
parent0acf3471b446f0ee88a6b6dd4de76deede81f9ba (diff)
Merge pull request #14731 from vespa-engine/mpolden/revert-lock-change
Revert "Take both application locks during transition"
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java25
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java17
2 files changed, 16 insertions, 26 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
index 5ae47d44e9f..5d6a4668263 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
@@ -11,7 +11,6 @@ import com.yahoo.config.provision.NodeFlavors;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.Zone;
import com.yahoo.path.Path;
-import com.yahoo.transaction.Mutex;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.transaction.Transaction;
import com.yahoo.vespa.curator.Curator;
@@ -391,33 +390,15 @@ public class CuratorDatabaseClient {
* transaction. The config server then commits (writes) the transaction which may include operations that modify
* data in paths owned by this class.
*/
- // TODO(mpolden): Simplify once we are down to one application lock
- public Mutex lock(ApplicationId application, Duration timeout) {
- Mutex legacyLock;
- Mutex lock;
- // Take the application lock (same as config server). This is likely held at this point, but is re-entrant.
+ public Lock lock(ApplicationId application, Duration timeout) {
try {
- lock = db.lock(lockPath(application), timeout);
+ return db.lock(lockPath(application), timeout);
} catch (UncheckedTimeoutException e) {
throw new ApplicationLockException(e);
}
- // Take the legacy node-repository lock
- try {
- legacyLock = db.lock(legacyLockPath(application), timeout);
- } catch (UncheckedTimeoutException e) {
- lock.close();
- throw new ApplicationLockException(e);
- }
- return () -> {
- try {
- legacyLock.close();
- } finally {
- lock.close();
- }
- };
}
- public Mutex lock(ApplicationId application) {
+ public Lock lock(ApplicationId application) {
return lock(application, defaultLockTimeout);
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java
index b60364d903e..36625f3559e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java
@@ -8,6 +8,7 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.curator.Curator;
+import com.yahoo.vespa.curator.Lock;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.provisioning.FlavorConfigBuilder;
@@ -40,14 +41,22 @@ public class CuratorDatabaseClientTest {
@Test
public void locks_can_be_acquired_and_released() {
ApplicationId app = ApplicationId.from(TenantName.from("testTenant"), ApplicationName.from("testApp"), InstanceName.from("testInstance"));
- try (var ignored = zkClient.lock(app)) {
+
+ try (Lock mutex1 = zkClient.lock(app)) {
+ mutex1.toString(); // reference to avoid warning
throw new RuntimeException();
- } catch (RuntimeException expected) {
}
- try (var ignored = zkClient.lock(app)) {
+ catch (RuntimeException expected) {
}
- try (var ignored = zkClient.lock(app)) {
+
+ try (Lock mutex2 = zkClient.lock(app)) {
+ mutex2.toString(); // reference to avoid warning
}
+
+ try (Lock mutex3 = zkClient.lock(app)) {
+ mutex3.toString(); // reference to avoid warning
+ }
+
}
}