From baaf967996c4442c9dd6092e4d969fb27e9e17fb Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Mon, 25 Sep 2017 15:05:40 +0200 Subject: Rename to lockWhile, rename arguments --- .../node/admin/nodeadmin/NodeAdminStateUpdater.java | 2 +- .../com/yahoo/concurrent/classlock/ClassLocking.java | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java index f2dd445f8c8..70821d29932 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java @@ -87,7 +87,7 @@ public class NodeAdminStateUpdater { this.loopThread = new Thread(() -> { log.info(objectToString() + ": Acquiring lock"); try { - classLock = Optional.of(classLocking.tryLock(NodeAdminStateUpdater.class, () -> !terminated.get())); + classLock = Optional.of(classLocking.lockWhile(NodeAdminStateUpdater.class, () -> !terminated.get())); } catch (LockInterruptException e) { classLock = Optional.empty(); return; diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java index 61e6850ee2e..a6347d9fb14 100644 --- a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java +++ b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java @@ -2,7 +2,7 @@ package com.yahoo.concurrent.classlock; import java.util.HashMap; import java.util.Map; -import java.util.function.Supplier; +import java.util.function.BooleanSupplier; /** * @author valerijf @@ -11,18 +11,18 @@ public class ClassLocking { private final Map, ClassLock> classLocks = new HashMap<>(); public synchronized ClassLock lock(Class clazz) { - return tryLock(clazz, () -> true); + return lockWhile(clazz, () -> true); } - public synchronized ClassLock tryLock(Class clazz, Supplier continueRetrying) { + public synchronized ClassLock lockWhile(Class clazz, BooleanSupplier interruptCondition) { while(classLocks.containsKey(clazz)) { try { wait(); - } catch (InterruptedException ignored) { - if (! continueRetrying.get()) { - throw new LockInterruptException(); - } - } + } catch (InterruptedException ignored) { } + } + + if (! interruptCondition.getAsBoolean()) { + throw new LockInterruptException(); } ClassLock classLock = new ClassLock(this, clazz); -- cgit v1.2.3