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 <[email protected]>
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();