This is an automated email from the ASF dual-hosted git repository. dlmarion pushed a commit to branch 2.1 in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/2.1 by this push: new b935a7b43e Reuse ServiceLock instances (#4838) b935a7b43e is described below commit b935a7b43e7db036dca61f199525e01217481502 Author: Dave Marion <dlmar...@apache.org> AuthorDate: Tue Aug 27 07:59:10 2024 -0400 Reuse ServiceLock instances (#4838) The ServiceLock calls ZooKeeper.exists(path, this) in the constructor, where "this" is a Watcher. Looking at the places where ServiceLock is constructed I found several places where this was being done inside of a loop which may end up creating multiple watchers in the ZooKeeper client instance. This change moves the ServiceLock construction outside of the loop. --- .../java/org/apache/accumulo/coordinator/CompactionCoordinator.java | 4 ++-- .../src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java | 4 ++-- server/manager/src/main/java/org/apache/accumulo/manager/Manager.java | 2 +- server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java | 3 ++- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java b/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java index 5852587338..37039adf68 100644 --- a/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java +++ b/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java @@ -216,11 +216,11 @@ public class CompactionCoordinator extends AbstractServer final String lockPath = getContext().getZooKeeperRoot() + Constants.ZCOORDINATOR_LOCK; final UUID zooLockUUID = UUID.randomUUID(); + coordinatorLock = new ServiceLock(getContext().getZooReaderWriter().getZooKeeper(), + ServiceLock.path(lockPath), zooLockUUID); while (true) { CoordinatorLockWatcher coordinatorLockWatcher = new CoordinatorLockWatcher(); - coordinatorLock = new ServiceLock(getContext().getZooReaderWriter().getZooKeeper(), - ServiceLock.path(lockPath), zooLockUUID); coordinatorLock.lock(coordinatorLockWatcher, coordinatorClientAddress.getBytes(UTF_8)); coordinatorLockWatcher.waitForChange(); diff --git a/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java b/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java index ee2f31d1f1..153cf698a2 100644 --- a/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java +++ b/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java @@ -379,9 +379,9 @@ public class SimpleGarbageCollector extends AbstractServer implements Iface { }; UUID zooLockUUID = UUID.randomUUID(); + ServiceLock lock = + new ServiceLock(getContext().getZooReaderWriter().getZooKeeper(), path, zooLockUUID); while (true) { - ServiceLock lock = - new ServiceLock(getContext().getZooReaderWriter().getZooKeeper(), path, zooLockUUID); if (lock.tryLock(lockWatcher, new ServerServices(addr.toString(), Service.GC_CLIENT).toString().getBytes(UTF_8))) { log.debug("Got GC ZooKeeper lock"); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java index a554b2d818..77c9da57ae 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java @@ -1677,10 +1677,10 @@ public class Manager extends AbstractServer getHostname() + ":" + getConfiguration().getPort(Property.MANAGER_CLIENTPORT)[0]; UUID zooLockUUID = UUID.randomUUID(); + managerLock = new ServiceLock(zooKeeper, zManagerLoc, zooLockUUID); while (true) { ManagerLockWatcher managerLockWatcher = new ManagerLockWatcher(); - managerLock = new ServiceLock(zooKeeper, zManagerLoc, zooLockUUID); managerLock.lock(managerLockWatcher, managerClientAddress.getBytes(UTF_8)); managerLockWatcher.waitForChange(); diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java index 39fe11d91b..bc57f62ff7 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java @@ -829,9 +829,10 @@ public class Monitor extends AbstractServer implements HighlyAvailableService { // Get a ZooLock for the monitor UUID zooLockUUID = UUID.randomUUID(); + monitorLock = new ServiceLock(zoo.getZooKeeper(), monitorLockPath, zooLockUUID); + while (true) { MoniterLockWatcher monitorLockWatcher = new MoniterLockWatcher(); - monitorLock = new ServiceLock(zoo.getZooKeeper(), monitorLockPath, zooLockUUID); monitorLock.lock(monitorLockWatcher, new byte[0]); monitorLockWatcher.waitForChange();