From 98c87302c0faad3dfa3e33c6d74eec6c4ee16369 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Thu, 06 Aug 2026 07:54:34 +0000
Subject: [PATCH] Avoid global write lock on every delete in GroupManager (#682)
---
opendj-server-legacy/src/main/java/org/opends/server/core/GroupManager.java | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/GroupManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/GroupManager.java
index 69ecd38..66aae56 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/GroupManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/GroupManager.java
@@ -678,6 +678,23 @@
return;
}
+ // Fast path: this hook runs for every delete, but almost no deleted
+ // entries have a group registered at or below them. Check with the read
+ // lock first instead of serializing all delete threads on the exclusive
+ // lock (same pattern as SubentryManager.doPostDelete).
+ lock.readLock().lock();
+ try
+ {
+ if (!groupInstances.containsSubtree(entry.getName()))
+ {
+ return;
+ }
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
+
lock.writeLock().lock();
try
{
--
Gitblit v1.10.0