From f095fd89e6e8a45f4aabf62b127f907001319f82 Mon Sep 17 00:00:00 2001
From: Fabio Pistolesi <fabio.pistolesi@forgerock.com>
Date: Thu, 14 Apr 2016 15:52:34 +0000
Subject: [PATCH] OPENDJ-2792 Enable permissive modifies when replicating schema changes
---
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java
index 29b844f..6b76dd5 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -19,6 +19,7 @@
import static org.forgerock.opendj.ldap.ResultCode.*;
import static org.opends.messages.ReplicationMessages.*;
import static org.opends.messages.ToolMessages.*;
+import static org.opends.server.config.ConfigConstants.DN_DEFAULT_SCHEMA_ROOT;
import static org.opends.server.protocols.internal.InternalClientConnection.*;
import static org.opends.server.protocols.internal.Requests.*;
import static org.opends.server.replication.plugin.EntryHistorical.*;
@@ -369,6 +370,8 @@
"2.5.4.0" // objectClass OID
};
+ private static final DN SET_PERMISSIVE_MODIFY_FOR_DN = DN.valueOf(DN_DEFAULT_SCHEMA_ROOT);
+
/**
* When true, this flag is used to force the domain status to be put in bad
* data set just after the connection to the replication server.
@@ -2312,6 +2315,16 @@
// are processed locally.
op.addRequestControl(new LDAPControl(OID_MANAGE_DSAIT_CONTROL));
+ // Warning: specific processing ahead. See OPENDJ-2792
+ if (op instanceof ModifyOperation)
+ {
+ ModifyOperation modifyOperation = (ModifyOperation) op;
+ if (modifyOperation.getEntryDN().equals(SET_PERMISSIVE_MODIFY_FOR_DN))
+ {
+ op.addRequestControl(new LDAPControl(OID_PERMISSIVE_MODIFY_CONTROL));
+ }
+ }
+
csn = OperationContext.getCSN(op);
op.run();
--
Gitblit v1.10.0