diff options
author | HÃ¥kon Hallingstad <hakon@verizonmedia.com> | 2020-10-06 09:49:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-06 09:49:53 +0200 |
commit | 5c4a0dab894a17b2a20a4e1b51b51d274c5c5265 (patch) | |
tree | 2df426a9cfc7f51129cfa6a0aa147d2909203278 | |
parent | 35422b50c159c2430ce461999495a30c9a64ee94 (diff) | |
parent | 0acf3471b446f0ee88a6b6dd4de76deede81f9ba (diff) |
Merge pull request #14731 from vespa-engine/mpolden/revert-lock-change
Revert "Take both application locks during transition"
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 + } + } } |