From 5671d81746978f250bd24dd691509c64406e5510 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Thu, 06 Aug 2026 07:55:35 +0000
Subject: [PATCH] Skip replication processing when no replication domain is configured (#681)
---
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/MultimasterReplication.java | 37 ++++++++++++++++++++++++++-----------
1 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/MultimasterReplication.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/MultimasterReplication.java
index 0e86580..549d35a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/MultimasterReplication.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/MultimasterReplication.java
@@ -98,6 +98,12 @@
private ReplicationServerListener replicationServerListener;
private static final Map<DN, LDAPReplicationDomain> domains = new ConcurrentHashMap<>(4);
+ /**
+ * Shared stateless "continue processing" result: the provider hooks run for
+ * every operation, so avoid allocating a fresh result each time.
+ */
+ private static final SynchronizationProviderResult CONTINUE =
+ new SynchronizationProviderResult.ContinueProcessing();
private static final DSRSShutdownSync dsrsShutdownSync = new DSRSShutdownSync();
/** The queue of received update messages, to be treated by the ReplayThread threads. */
private static final BlockingQueue<UpdateToReplay> updateToReplayQueue = new LinkedBlockingQueue<>(10000);
@@ -167,6 +173,15 @@
}
}
+ if (domains.isEmpty())
+ {
+ // The Multimaster Synchronization provider is enabled by default even
+ // on standalone servers with no replication domain configured: skip
+ // the walk to the suffix that every write operation would otherwise
+ // pay three times (conflict resolution, pre- and post-operation).
+ return null;
+ }
+
LDAPReplicationDomain domain = null;
DN temp = dn;
BackendConfigManager backendConfigManager =
@@ -406,7 +421,7 @@
{
return domain.handleConflictResolution(modifyOperation);
}
- return new SynchronizationProviderResult.ContinueProcessing();
+ return CONTINUE;
}
@Override
@@ -418,7 +433,7 @@
{
return domain.handleConflictResolution(addOperation);
}
- return new SynchronizationProviderResult.ContinueProcessing();
+ return CONTINUE;
}
@Override
@@ -430,7 +445,7 @@
{
return domain.handleConflictResolution(deleteOperation);
}
- return new SynchronizationProviderResult.ContinueProcessing();
+ return CONTINUE;
}
@Override
@@ -442,7 +457,7 @@
{
return domain.handleConflictResolution(modifyDNOperation);
}
- return new SynchronizationProviderResult.ContinueProcessing();
+ return CONTINUE;
}
@Override
@@ -454,7 +469,7 @@
if (domain == null || !domain.solveConflict())
{
- return new SynchronizationProviderResult.ContinueProcessing();
+ return CONTINUE;
}
EntryHistorical historicalInformation = (EntryHistorical)
@@ -479,14 +494,14 @@
ResultCode.SUCCESS, null);
}
- return new SynchronizationProviderResult.ContinueProcessing();
+ return CONTINUE;
}
@Override
public SynchronizationProviderResult doPreOperation(
PreOperationDeleteOperation deleteOperation) throws DirectoryException
{
- return new SynchronizationProviderResult.ContinueProcessing();
+ return CONTINUE;
}
@Override
@@ -499,7 +514,7 @@
if (domain == null || !domain.solveConflict())
{
- return new SynchronizationProviderResult.ContinueProcessing();
+ return CONTINUE;
}
// The historical object is retrieved from the attachment created
@@ -520,7 +535,7 @@
// Add to the operation the historical attribute : "dn:changeNumber:moddn"
historicalInformation.setHistoricalAttrToOperation(modifyDNOperation);
- return new SynchronizationProviderResult.ContinueProcessing();
+ return CONTINUE;
}
@Override
@@ -532,7 +547,7 @@
findDomain(addOperation.getEntryDN(), addOperation);
if (domain == null)
{
- return new SynchronizationProviderResult.ContinueProcessing();
+ return CONTINUE;
}
// For LOCAL op only, generate CSN and attach Context
@@ -544,7 +559,7 @@
// Add to the operation the historical attribute : "dn:changeNumber:add"
EntryHistorical.setHistoricalAttrToOperation(addOperation);
- return new SynchronizationProviderResult.ContinueProcessing();
+ return CONTINUE;
}
@Override
--
Gitblit v1.10.0