opends/resource/schema/02-config.ldif
@@ -2410,6 +2410,12 @@ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 USAGE directoryOperation X-ORIGIN 'OpenDS Directory Server' ) attributeTypes: ( 1.3.6.1.4.1.26027.1.1.592 NAME 'ds-cfg-solve-conflicts' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 USAGE directoryOperation X-ORIGIN 'OpenDS Directory Server' ) objectClasses: ( 1.3.6.1.4.1.26027.1.2.1 NAME 'ds-cfg-access-control-handler' SUP top @@ -2969,7 +2975,8 @@ ds-cfg-group-id $ ds-cfg-referrals-url $ ds-cfg-fractional-exclude $ ds-cfg-fractional-include) ds-cfg-fractional-include $ ds-cfg-solve-conflicts ) X-ORIGIN 'OpenDS Directory Server' ) objectClasses: ( 1.3.6.1.4.1.26027.1.2.58 NAME 'ds-cfg-length-based-password-validator' opends/src/admin/defn/org/opends/server/admin/std/ReplicationDomainConfiguration.xml
@@ -108,7 +108,7 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="window-size" advanced="true"> <adm:property name="window-size"> <adm:synopsis> Specifies the window size that the Directory Server will use when communicating with Replication Servers. @@ -127,7 +127,7 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="heartbeat-interval" advanced="true"> <adm:property name="heartbeat-interval"> <adm:synopsis> Specifies the heart-beat interval that the Directory Server will use when communicating with Replication Servers. @@ -193,7 +193,7 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="assured-type" mandatory="false" advanced="true"> <adm:property name="assured-type" mandatory="false"> <adm:synopsis> Defines the assured replication mode of the replicated domain. </adm:synopsis> @@ -243,7 +243,7 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="assured-sd-level" mandatory="false" advanced="true"> <adm:property name="assured-sd-level" mandatory="false"> <adm:synopsis> The level of acknowledgment for Safe Data assured sub mode. </adm:synopsis> @@ -267,7 +267,7 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="assured-timeout" mandatory="false" advanced="true"> <adm:property name="assured-timeout" mandatory="false"> <adm:synopsis> The timeout value when waiting for assured replication acknowledgments. </adm:synopsis> @@ -290,7 +290,7 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="group-id" mandatory="false" advanced="true"> <adm:property name="group-id" mandatory="false"> <adm:synopsis> The group ID associated with this replicated domain. </adm:synopsis> @@ -314,8 +314,7 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="referrals-url" multi-valued="true" mandatory="false" advanced="true"> <adm:property name="referrals-url" multi-valued="true" mandatory="false"> <adm:synopsis> The URLs other LDAP servers should use to refer to the local server. </adm:synopsis> @@ -345,8 +344,7 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="fractional-include" multi-valued="true" mandatory="false" advanced="true"> <adm:property name="fractional-include" multi-valued="true" mandatory="false"> <adm:synopsis> Allows to include some attributes to replicate to this server. </adm:synopsis> @@ -392,8 +390,7 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="fractional-exclude" multi-valued="true" mandatory="false" advanced="true"> <adm:property name="fractional-exclude" multi-valued="true" mandatory="false"> <adm:synopsis> Allows to exclude some attributes to replicate to this server. </adm:synopsis> @@ -440,4 +437,30 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="solve-conflicts" advanced="true"> <adm:synopsis> Indicates if this server solves conflict. </adm:synopsis> <adm:description> This boolean indicates if this domain keeps the historical information necessary to solve conflicts. When set to false the server will not maintain historical information and will therefore not be able to solve conflict. This should therefore be done only if the replication is used in a single master type of deployment. </adm:description> <adm:default-behavior> <adm:defined> <adm:value>true</adm:value> </adm:defined> </adm:default-behavior> <adm:syntax> <adm:boolean /> </adm:syntax> <adm:profile name="ldap"> <ldap:attribute> <ldap:name>ds-cfg-solve-conflicts</ldap:name> </ldap:attribute> </adm:profile> </adm:property> </adm:managed-object> opends/src/admin/defn/org/opends/server/admin/std/ReplicationServerConfiguration.xml
@@ -23,7 +23,7 @@ ! CDDL HEADER END ! ! ! Copyright 2007-2008 Sun Microsystems, Inc. ! Copyright 2007-2009 Sun Microsystems, Inc. ! --> <adm:managed-object name="replication-server" plural-name="replication-servers" @@ -93,7 +93,7 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="window-size" advanced="true"> <adm:property name="window-size"> <adm:synopsis> Specifies the window size that the <adm:user-friendly-name /> @@ -154,7 +154,7 @@ </ldap:attribute> </adm:profile> </adm:property> <adm:property name="replication-purge-delay" advanced="true"> <adm:property name="replication-purge-delay"> <adm:synopsis> The time (in seconds) after which the <adm:user-friendly-name /> opends/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRule.java
@@ -136,6 +136,7 @@ @Override public ByteString normalizeValue(ByteSequence value) { String[] token = value.toString().split(":", 3); /* Change the format of the value to index and start @@ -148,7 +149,10 @@ String serverId = token[1].substring(16,20); String seqNumber = token[1].substring(20, 28); return ByteString.valueOf(serverId + timestamp + seqNumber); if (MultimasterReplication.isLocalServerId(Short.parseShort(serverId, 16))) return ByteString.valueOf(serverId + timestamp + seqNumber); else return (ByteString.valueOf("0")); } /** opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -492,7 +492,7 @@ } else { solveConflictFlag = true; solveConflictFlag = configuration.isSolveConflicts(); } Backend backend = retrievesBackend(baseDn); @@ -4369,6 +4369,22 @@ // Read fractional configuration and reconnect if needed readFractionalConfig(configuration, true); /* * Modify conflicts are solved for all suffixes but the schema suffix * because we don't want to store extra information in the schema * ldif files. * This has no negative impact because the changes on schema should * not produce conflicts. */ if (baseDn.compareTo(DirectoryServer.getSchemaDN()) == 0) { solveConflictFlag = false; } else { solveConflictFlag = configuration.isSolveConflicts(); } return new ConfigChangeResult(ResultCode.SUCCESS, false); } opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java
@@ -836,4 +836,20 @@ return privateDNs; } /** * Checks if a given serverID is used by a local Replication Domain. * * @param serverId The serverID that should be checked. * @return true if the serverID is local, false otherwise. */ public static boolean isLocalServerId(Short serverId) { for (LDAPReplicationDomain domain : domains.values()) { if (domain.getServerId() == serverId) return true; } return false; } } opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/DomainFakeCfg.java
@@ -343,4 +343,9 @@ { return fractionalIncludes; } public boolean isSolveConflicts() { return true; } }