mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

gbellato
10.29.2009 4594bba26216d84018569a042f6517d966bf106f
Fix for 4169 : Ability to disable generation of historical information
and 4170 : Replication should not generate HistoricalCsnOrdering index for replayed operation
7 files modified
107 ■■■■ changed files
opends/resource/schema/02-config.ldif 9 ●●●● patch | view | raw | blame | history
opends/src/admin/defn/org/opends/server/admin/std/ReplicationDomainConfiguration.xml 47 ●●●● patch | view | raw | blame | history
opends/src/admin/defn/org/opends/server/admin/std/ReplicationServerConfiguration.xml 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingMatchingRule.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java 18 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java 16 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/DomainFakeCfg.java 5 ●●●●● patch | view | raw | blame | history
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;
  }
}