diff options
-rw-r--r-- | zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java | 7 | ||||
-rw-r--r-- | zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java index 9b18a73543b..d116b57f506 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java @@ -147,8 +147,8 @@ class SingletonManager implements AutoCloseable { public void unlock() { doom.set(null); if (lock != null) try { - lock.close(); metrics.hasLease(false); + lock.close(); lock = null; } catch (Exception e) { @@ -255,7 +255,8 @@ class SingletonManager implements AutoCloseable { */ private void renewLease() { if (doom.get() == INVALID || singletons.isEmpty()) { - unlock(); + doom.set(null); + return; // Skip to updateStatus, deactivation, and release the lock. } // Witness value to detect if invalidation occurs between here and successful ping. Instant ourDoom = doom.get(); @@ -299,8 +300,8 @@ class SingletonManager implements AutoCloseable { } if (active && ! shouldBeActive) { try { - active = false; if ( ! singletons.isEmpty()) metrics.deactivation(singletons.peek()::deactivate); + active = false; } catch (RuntimeException e) { logger.log(Level.WARNING, "Failed to deactivate " + singletons.peek(), e); diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java index e07ec307108..1ff639ed75a 100644 --- a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java +++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java @@ -288,8 +288,8 @@ public class CuratorWrapperTest { // Simulate connection loss for our singleton's ZK session. ((MockCuratorFramework) wrapped.framework()).connectionStateListeners.listeners.forEach(listener -> listener.stateChanged(null, ConnectionState.LOST)); - stunning.arriveAndAwaitAdvance(); singleton.phaser.arriveAndAwaitAdvance(); + stunning.arriveAndAwaitAdvance(); assertFalse(singleton.isActive); verifyMetrics(Map.of("activation.count", 1.0, "activation.millis", 0.0, |