From d0deb0709fc73a94d3d46ac76753933383861b00 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Thu, 10 Sep 2026 11:56:42 +0000
Subject: [PATCH] [#901] Make the replay retry budget of a replication domain configurable (#944)
---
opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java | 39 +++++++++++++++++++++++++++++++++++++++
1 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java
index bcedc42..9d5f9db 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java
@@ -56,6 +56,7 @@
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.ModifyOperation;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.protocols.internal.SearchRequest;
@@ -859,6 +860,44 @@
return Requests.newModifyRequest(entryDN).addModification(modType, attrName, attrValue);
}
+ /**
+ * Applies a modification to the configuration entry of a replication domain, the way an
+ * administrator would, and checks that it was applied.
+ * <p>
+ * The domain reads its configuration for every decision it makes, so a property changed
+ * here takes effect on what the domain is doing right now.
+ *
+ * @param domainConfigDN
+ * the DN of the configuration entry of the domain
+ * @param modType
+ * the modification to apply, {@link ModificationType#DELETE} with no value
+ * taking an attribute away so that its property falls back to its default
+ * @param attrName
+ * the configuration attribute to modify
+ * @param values
+ * the values to set, none when the attribute is being deleted
+ */
+ protected static void modifyDomainConfig(
+ DN domainConfigDN, ModificationType modType, String attrName, String... values)
+ {
+ final ModifyRequest request = Requests.newModifyRequest(domainConfigDN)
+ .addModification(modType, attrName, (Object[]) values);
+ final ModifyOperation modOp =
+ InternalClientConnection.getRootConnection().processModify(request);
+ if (modType == DELETE && modOp.getResultCode() == NO_SUCH_ATTRIBUTE)
+ {
+ /*
+ * The attribute is already gone, which is what the delete was asking for. Said here
+ * rather than at the call sites because a delete is how a test puts a property back
+ * to its default in a finally: a cleanup which throws would replace the failure it
+ * is cleaning up after, and say nothing about it.
+ */
+ return;
+ }
+ assertEquals(modOp.getResultCode(), SUCCESS,
+ "Cannot " + modType + " " + attrName + " on " + domainConfigDN);
+ }
+
/** Utility method to create, run a task and check its result. */
protected void task(String task) throws Exception
{
--
Gitblit v1.10.0