aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@yahooinc.com>2022-04-27 15:35:53 +0200
committerHåkon Hallingstad <hakon@yahooinc.com>2022-04-27 15:35:53 +0200
commit9e4cb8d801ef919ef4bb0152b92af8040ee33e46 (patch)
tree89853cb08f8be29c33cbbb8d6c95e8433f618ce1
parent438b74814c8144f7284007a8680c277b03938e44 (diff)
Test out-of-order release
-rw-r--r--zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java
index e5a1ea7c683..524fcd3abd1 100644
--- a/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java
+++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java
@@ -200,8 +200,46 @@ public class LockTest {
assertEquals(lock2Path, lockAttempts.get(1).getLockPath());
assertEquals(LockAttempt.LockState.ACQUIRED, lockAttempts.get(1).getLockState());
+ lock2.close();
lock.close();
+ }
+
+ @Test
+ public void locksReleaseOutOfOrder() throws Exception {
+ when(mutex.acquire(anyLong(), any())).thenReturn(true);
+
+ lock.acquire(acquireTimeout);
+ assertLockMetricsIs(new LockMetrics().setAcquireCount(1)
+ .setCumulativeAcquireCount(1)
+ .setAcquireSucceededCount(1)
+ .setCumulativeAcquireSucceededCount(1));
+ lock2.acquire(acquireTimeout);
+ assertLock2MetricsIs(new LockMetrics().setAcquireCount(1)
+ .setCumulativeAcquireCount(1)
+ .setAcquireSucceededCount(1)
+ .setCumulativeAcquireSucceededCount(1));
lock.close();
+ assertLockMetricsIs(new LockMetrics().setAcquireCount(0)
+ .setCumulativeAcquireCount(1)
+ .setAcquireSucceededCount(0)
+ .setCumulativeAcquireSucceededCount(1)
+ .setReleaseCount(1)
+ .setCumulativeReleaseCount(1));
+
+ List<ThreadLockStats> threadLockStats = LockStats.getGlobal().getThreadLockStats();
+ assertEquals(1, threadLockStats.size());
+ List<LockAttempt> lockAttempts = threadLockStats.get(0).getOngoingLockAttempts();
+ assertEquals(1, lockAttempts.size());
+ assertEquals(lock2Path, lockAttempts.get(0).getLockPath());
+ assertEquals(LockAttempt.LockState.ACQUIRED, lockAttempts.get(0).getLockState());
+
+ lock2.close();
+ assertLock2MetricsIs(new LockMetrics().setAcquireCount(0)
+ .setCumulativeAcquireCount(1)
+ .setAcquireSucceededCount(0)
+ .setCumulativeAcquireSucceededCount(1)
+ .setReleaseCount(1)
+ .setCumulativeReleaseCount(1));
}
@Test