From 157717b205d4c1f957cf810e04e06f11530c619c Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 02 Sep 2013 08:57:43 +0000
Subject: [PATCH] Renamed: - ChangeNumber to CSN - ChangeNumberGenerator to CSNGenerator - ChangeNumberTest to CSNTest - ChangeNumberGeneratorTest to CSNGeneratorTest

---
 opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java |  361 ++++++++++++++++++++++++---------------------------
 1 files changed, 170 insertions(+), 191 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java b/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
index 1effbbb..8ba112c 100644
--- a/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
+++ b/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -107,15 +107,13 @@
    */
   private class ScanSearchListener implements InternalSearchListener
   {
-    private final ChangeNumber startingChangeNumber;
-    private final ChangeNumber endChangeNumber;
+    private final CSN startCSN;
+    private final CSN endCSN;
 
-    public ScanSearchListener(
-        ChangeNumber startingChangeNumber,
-        ChangeNumber endChangeNumber)
+    public ScanSearchListener(CSN startCSN, CSN endCSN)
     {
-      this.startingChangeNumber = startingChangeNumber;
-      this.endChangeNumber = endChangeNumber;
+      this.startCSN = startCSN;
+      this.endCSN = endCSN;
     }
 
     @Override
@@ -123,20 +121,19 @@
         InternalSearchOperation searchOperation, SearchResultEntry searchEntry)
         throws DirectoryException
     {
-      // Build the list of Operations that happened on this entry
-      // after startingChangeNumber and before endChangeNumber and
-      // add them to the replayOperations list
+      // Build the list of Operations that happened on this entry after startCSN
+      // and before endCSN and add them to the replayOperations list
       Iterable<FakeOperation> updates =
         EntryHistorical.generateFakeOperations(searchEntry);
 
       for (FakeOperation op : updates)
       {
-        ChangeNumber cn = op.getChangeNumber();
-        if ((cn.newer(startingChangeNumber)) && (cn.older(endChangeNumber)))
+        CSN csn = op.getCSN();
+        if (csn.newer(startCSN) && csn.older(endCSN))
         {
           synchronized (replayOperations)
           {
-            replayOperations.put(cn, op);
+            replayOperations.put(csn, op);
           }
         }
       }
@@ -184,7 +181,7 @@
   private volatile long generationId = -1;
   private volatile boolean generationIdSavedStatus = false;
 
-  private final ChangeNumberGenerator generator;
+  private final CSNGenerator generator;
 
   /**
    * This object is used to store the list of update currently being
@@ -222,8 +219,8 @@
    * This list is used to temporary store operations that needs to be replayed
    * at session establishment time.
    */
-  private final SortedMap<ChangeNumber, FakeOperation> replayOperations =
-    new TreeMap<ChangeNumber, FakeOperation>();
+  private final SortedMap<CSN, FakeOperation> replayOperations =
+    new TreeMap<CSN, FakeOperation>();
 
   /**
    * The isolation policy that this domain is going to use.
@@ -338,25 +335,25 @@
 
   /**
    * This configuration boolean indicates if this ReplicationDomain should log
-   * ChangeNumbers.
+   * CSNs.
    */
-  private boolean logChangeNumber = false;
+  private boolean logCSN = false;
 
   /**
    * This configuration integer indicates the time the domain keeps the
    * historical information necessary to solve conflicts.<br>
    * When a change stored in the historical part of the user entry has a date
-   * (from its replication ChangeNumber) older than this delay, it is candidate
-   * to be purged.
+   * (from its replication CSN) older than this delay, it is candidate to be
+   * purged.
    */
   private long histPurgeDelayInMilliSec = 0;
 
   /**
-   * The last change number purged in this domain. Allows to have a continuous
-   * purging process from one purge processing (task run) to the next one.
-   * Values 0 when the server starts.
+   * The last CSN purged in this domain. Allows to have a continuous purging
+   * process from one purge processing (task run) to the next one. Values 0 when
+   * the server starts.
    */
-  private ChangeNumber lastChangeNumberPurgedFromHist = new ChangeNumber(0,0,0);
+  private CSN lastCSNPurgedFromHist = new CSN(0,0,0);
 
   /**
    * The thread that periodically saves the ServerState of this
@@ -410,16 +407,14 @@
    */
   private class RSUpdater extends DirectoryThread
   {
-    private final ChangeNumber startChangeNumber;
+    private final CSN startCSN;
 
-
-
-    protected RSUpdater(ChangeNumber replServerMaxChangeNumber)
+    protected RSUpdater(CSN replServerMaxCSN)
     {
       super("Replica DS(" + serverId
           + ") missing change publisher for domain \""
           + baseDn.toString() + "\"");
-      this.startChangeNumber = replServerMaxChangeNumber;
+      this.startCSN = replServerMaxCSN;
     }
 
     /**
@@ -439,7 +434,7 @@
        */
       try
       {
-        if (buildAndPublishMissingChanges(startChangeNumber, broker))
+        if (buildAndPublishMissingChanges(startCSN, broker))
         {
           message = DEBUG_CHANGES_SENT.get();
           logError(message);
@@ -511,7 +506,7 @@
 
     this.isolationPolicy = configuration.getIsolationPolicy();
     this.configDn = configuration.dn();
-    this.logChangeNumber = configuration.isLogChangenumber();
+    this.logCSN = configuration.isLogChangenumber();
     this.updateToReplayQueue = updateToReplayQueue;
     this.histPurgeDelayInMilliSec =
       configuration.getConflictsHistoricalPurgeDelay()*60*1000;
@@ -549,17 +544,17 @@
 
     /*
      * Create a new Persistent Server State that will be used to store
-     * the last ChangeNumber seen from all LDAP servers in the topology.
+     * the last CSN seen from all LDAP servers in the topology.
      */
     state = new PersistentServerState(baseDn, serverId, getServerState());
 
     flushThread = new ServerStateFlush();
 
     /*
-     * ChangeNumberGenerator is used to create new unique ChangeNumbers
-     * for each operation done on this replication domain.
+     * CSNGenerator is used to create new unique CSNs for each operation done on
+     * this replication domain.
      *
-     * The generator time is adjusted to the time of the last CN received from
+     * The generator time is adjusted to the time of the last CSN received from
      * remote other servers.
      */
     generator = getGenerator();
@@ -1766,9 +1761,9 @@
     {
       // There is no replication context attached to the operation
       // so this is not a replication operation.
-      ChangeNumber changeNumber = generateChangeNumber(deleteOperation);
+      CSN csn = generateCSN(deleteOperation);
       String modifiedEntryUUID = EntryHistorical.getEntryUUID(deletedEntry);
-      ctx = new DeleteContext(changeNumber, modifiedEntryUUID);
+      ctx = new DeleteContext(csn, modifiedEntryUUID);
       deleteOperation.setAttachment(SYNCHROCONTEXT, ctx);
 
       synchronized (replayOperations)
@@ -1779,10 +1774,10 @@
           replayOperations.remove(replayOperations.firstKey());
         }
         replayOperations.put(
-            changeNumber,
+            csn,
             new FakeDelOperation(
                 deleteOperation.getEntryDN().toString(),
-                changeNumber,modifiedEntryUUID ));
+                csn, modifiedEntryUUID));
       }
 
     }
@@ -2017,7 +2012,7 @@
        */
       EntryHistorical hist = EntryHistorical.newInstanceFromEntry(
           modifyDNOperation.getOriginalEntry());
-      if (hist.addedOrRenamedAfter(ctx.getChangeNumber()))
+      if (hist.addedOrRenamedAfter(ctx.getCSN()))
       {
         return new SynchronizationProviderResult.StopProcessing(
             ResultCode.NO_OPERATION, null);
@@ -2027,7 +2022,7 @@
     {
       // There is no replication context attached to the operation
       // so this is not a replication operation.
-      ChangeNumber changeNumber = generateChangeNumber(modifyDNOperation);
+      CSN csn = generateCSN(modifyDNOperation);
       String newParentId = null;
       if (modifyDNOperation.getNewSuperior() != null)
       {
@@ -2036,7 +2031,7 @@
 
       Entry modifiedEntry = modifyDNOperation.getOriginalEntry();
       String modifiedEntryUUID = EntryHistorical.getEntryUUID(modifiedEntry);
-      ctx = new ModifyDnContext(changeNumber, modifiedEntryUUID, newParentId);
+      ctx = new ModifyDnContext(csn, modifiedEntryUUID, newParentId);
       modifyDNOperation.setAttachment(SYNCHROCONTEXT, ctx);
     }
     return new SynchronizationProviderResult.ContinueProcessing();
@@ -2052,8 +2047,7 @@
   public SynchronizationProviderResult handleConflictResolution(
          PreOperationModifyOperation modifyOperation)
   {
-    if ((!modifyOperation.isSynchronizationOperation())
-        && (!brokerIsConnected()))
+    if (!modifyOperation.isSynchronizationOperation() && !brokerIsConnected())
     {
       Message msg = ERR_REPLICATION_COULD_NOT_CONNECT.get(baseDn.toString());
       return new SynchronizationProviderResult.StopProcessing(
@@ -2112,12 +2106,12 @@
     if (ctx == null)
     {
       // No replication ctx attached => not a replicated operation
-      // - create a ctx with : changeNumber, entryUUID
+      // - create a ctx with : CSN, entryUUID
       // - attach the context to the op
 
-      ChangeNumber changeNumber = generateChangeNumber(modifyOperation);
+      CSN csn = generateCSN(modifyOperation);
       String modifiedEntryUUID = EntryHistorical.getEntryUUID(modifiedEntry);
-      ctx = new ModifyContext(changeNumber, modifiedEntryUUID);
+      ctx = new ModifyContext(csn, modifiedEntryUUID);
 
       modifyOperation.setAttachment(SYNCHROCONTEXT, ctx);
     }
@@ -2172,7 +2166,7 @@
    */
   public void doPreOperation(PreOperationAddOperation addOperation)
   {
-    AddContext ctx = new AddContext(generateChangeNumber(addOperation),
+    AddContext ctx = new AddContext(generateCSN(addOperation),
         EntryHistorical.getEntryUUID(addOperation),
         findEntryUUID(addOperation.getEntryDN().getParentDNInSuffix()));
 
@@ -2189,11 +2183,11 @@
     ResultCode result = op.getResultCode();
     // Note that a failed non-replication operation might not have a change
     // number.
-    ChangeNumber curChangeNumber = OperationContext.getChangeNumber(op);
-    if ((curChangeNumber != null) && (logChangeNumber))
+    CSN curCSN = OperationContext.getCSN(op);
+    if (curCSN != null && logCSN)
     {
       op.addAdditionalLogItem(AdditionalLogItem.unquotedKeyValue(getClass(),
-          "replicationCN", curChangeNumber));
+          "replicationCSN", curCSN));
     }
 
     if (result == ResultCode.SUCCESS)
@@ -2203,12 +2197,12 @@
         numReplayedPostOpCalled++;
         try
         {
-          remotePendingChanges.commit(curChangeNumber);
+          remotePendingChanges.commit(curCSN);
         }
         catch  (NoSuchElementException e)
         {
           Message message = ERR_OPERATION_NOT_FOUND_IN_PENDING.get(
-              op.toString(), curChangeNumber.toString());
+              op.toString(), curCSN.toString());
           logError(message);
           return;
         }
@@ -2225,7 +2219,7 @@
           * This is an operation type that we do not know about
           * It should never happen.
           */
-          pendingChanges.remove(curChangeNumber);
+          pendingChanges.remove(curCSN);
           Message message =
               ERR_UNKNOWN_TYPE.get(op.getOperationType().toString());
           logError(message);
@@ -2247,7 +2241,7 @@
         try
         {
           msg.encode();
-          pendingChanges.commitAndPushCommittedChanges(curChangeNumber, msg);
+          pendingChanges.commitAndPushCommittedChanges(curCSN, msg);
         } catch (UnsupportedEncodingException e)
         {
           // will be caught at publish time.
@@ -2255,7 +2249,7 @@
         catch  (NoSuchElementException e)
         {
           Message message = ERR_OPERATION_NOT_FOUND_IN_PENDING.get(
-              op.toString(), curChangeNumber.toString());
+              op.toString(), curCSN.toString());
           logError(message);
           return;
         }
@@ -2293,9 +2287,9 @@
     {
       // Remove an unsuccessful non-replication operation from the pending
       // changes list.
-      if (curChangeNumber != null)
+      if (curCSN != null)
       {
-        pendingChanges.remove(curChangeNumber);
+        pendingChanges.remove(curCSN);
         pendingChanges.pushCommittedChanges();
       }
     }
@@ -2352,20 +2346,20 @@
        attrs, null);
 
      Entry entryToRename = null;
-     ChangeNumber entryToRenameCN = null;
+     CSN entryToRenameCSN = null;
      for (SearchResultEntry entry : searchOp.getSearchEntries())
      {
        EntryHistorical history = EntryHistorical.newInstanceFromEntry(entry);
        if (entryToRename == null)
        {
          entryToRename = entry;
-         entryToRenameCN = history.getDNDate();
+         entryToRenameCSN = history.getDNDate();
        }
-       else if (!history.addedOrRenamedAfter(entryToRenameCN))
+       else if (!history.addedOrRenamedAfter(entryToRenameCSN))
        {
          // this conflict is older than the previous, keep it.
          entryToRename = entry;
-         entryToRenameCN = history.getDNDate();
+         entryToRenameCSN = history.getDNDate();
        }
      }
 
@@ -2519,7 +2513,7 @@
     Operation op = null;
     boolean replayDone = false;
     boolean dependency = false;
-    ChangeNumber changeNumber = null;
+    CSN csn = null;
     int retryCount = 10;
 
     // Try replay the operation, then flush (replaying) any pending operation
@@ -2547,7 +2541,7 @@
           // are processed locally.
           op.addRequestControl(new LDAPControl(OID_MANAGE_DSAIT_CONTROL));
 
-          changeNumber = OperationContext.getChangeNumber(op);
+          csn = OperationContext.getCSN(op);
           op.run();
 
           ResultCode result = op.getResultCode();
@@ -2616,7 +2610,7 @@
               // the update became a dummy update and the result
               // of the conflict resolution phase is to do nothing.
               // however we still need to push this change to the serverState
-              updateError(changeNumber);
+              updateError(csn);
             }
             else
             {
@@ -2645,7 +2639,7 @@
           logError(message);
           numUnresolvedNamingConflicts.incrementAndGet();
           replayErrorMsg = message.toString();
-          updateError(changeNumber);
+          updateError(csn);
         }
       } catch (ASN1Exception e)
       {
@@ -2658,7 +2652,7 @@
         replayErrorMsg = logDecodingOperationError(msg, e);
       } catch (Exception e)
       {
-        if (changeNumber != null)
+        if (csn != null)
         {
           /*
            * An Exception happened during the replay process.
@@ -2670,7 +2664,7 @@
             stackTraceToSingleLineString(e), op.toString());
           logError(message);
           replayErrorMsg = message.toString();
-          updateError(changeNumber);
+          updateError(csn);
         } else
         {
           replayErrorMsg = logDecodingOperationError(msg, e);
@@ -2691,7 +2685,7 @@
       // Prepare restart of loop
       replayDone = false;
       dependency = false;
-      changeNumber = null;
+      csn = null;
       retryCount = 10;
 
     } while (msg != null);
@@ -2711,13 +2705,13 @@
    * It is necessary because the postOperation does not always get
    * called when error or Exceptions happen during the operation replay.
    *
-   * @param changeNumber the ChangeNumber of the operation with error.
+   * @param csn the CSN of the operation with error.
    */
-  public void updateError(ChangeNumber changeNumber)
+  public void updateError(CSN csn)
   {
     try
     {
-      remotePendingChanges.commit(changeNumber);
+      remotePendingChanges.commit(csn);
     }
     catch (NoSuchElementException e)
     {
@@ -2726,21 +2720,20 @@
       if (debugEnabled())
       {
         TRACER.debugInfo(
-                "LDAPReplicationDomain.updateError: Unable to find remote "
-                    + "pending change for change number %s",
-                changeNumber);
+            "LDAPReplicationDomain.updateError: Unable to find remote "
+                + "pending change for CSN %s", csn);
       }
     }
   }
 
   /**
-   * Generate a new change number and insert it in the pending list.
+   * Generate a new CSN and insert it in the pending list.
    *
-   * @param operation The operation for which the change number must be
-   *                  generated.
-   * @return The new change number.
+   * @param operation
+   *          The operation for which the CSN must be generated.
+   * @return The new CSN.
    */
-  private ChangeNumber generateChangeNumber(PluginOperation operation)
+  private CSN generateCSN(PluginOperation operation)
   {
     return pendingChanges.putLocalOperation(operation);
   }
@@ -2909,7 +2902,7 @@
       // The other type of errors can not be caused by naming conflicts.
       // Log a message for the repair tool.
       Message message = ERR_ERROR_REPLAYING_OPERATION.get(
-          op.toString(), ctx.getChangeNumber().toString(),
+          op.toString(), ctx.getCSN().toString(),
           result.toString(), op.getErrorMessage().toString());
       logError(message);
       return true;
@@ -2982,7 +2975,7 @@
      // The other type of errors can not be caused by naming conflicts.
      // Log a message for the repair tool.
      Message message = ERR_ERROR_REPLAYING_OPERATION.get(
-         op.toString(), ctx.getChangeNumber().toString(),
+         op.toString(), ctx.getCSN().toString(),
          result.toString(), op.getErrorMessage().toString());
      logError(message);
      return true;
@@ -3103,7 +3096,7 @@
     // The other type of errors can not be caused by naming conflicts.
     // Log a message for the repair tool.
     Message message = ERR_ERROR_REPLAYING_OPERATION.get(
-        op.toString(), ctx.getChangeNumber().toString(),
+        op.toString(), ctx.getCSN().toString(),
         result.toString(), op.getErrorMessage().toString());
     logError(message);
     return true;
@@ -3202,7 +3195,7 @@
       // The other type of errors can not be caused by naming conflicts.
       // log a message for the repair tool.
       Message message = ERR_ERROR_REPLAYING_OPERATION.get(
-          op.toString(), ctx.getChangeNumber().toString(),
+          op.toString(), ctx.getCSN().toString(),
           result.toString(), op.getErrorMessage().toString());
       logError(message);
       return true;
@@ -3493,7 +3486,7 @@
     state.clearInMemory();
     state.loadState();
 
-    generator.adjust(state.getMaxChangeNumber(serverId));
+    generator.adjust(state.getMaxCSN(serverId));
     // Retrieves the generation ID associated with the data imported
 
     generationId = loadGenerationId();
@@ -3909,8 +3902,7 @@
     {
       String includeAttributeStrings[] =
         {"objectclass", "sn", "cn", "entryuuid"};
-      HashSet<AttributeType> includeAttributes;
-      includeAttributes = new HashSet<AttributeType>();
+      Set<AttributeType> includeAttributes = new HashSet<AttributeType>();
       for (String attrName : includeAttributeStrings)
       {
         AttributeType attrType  = DirectoryServer.getAttributeType(attrName);
@@ -4213,13 +4205,13 @@
 
 
   /**
-   * Push the modifications contained in the given parameter as
-   * a modification that would happen on a local server.
-   * The modifications are not applied to the local database,
-   * historical information is not updated but a ChangeNumber
-   * is generated and the ServerState associated to this domain is
-   * updated.
-   * @param modifications The modification to push
+   * Push the modifications contained in the given parameter as a modification
+   * that would happen on a local server. The modifications are not applied to
+   * the local database, historical information is not updated but a CSN is
+   * generated and the ServerState associated to this domain is updated.
+   *
+   * @param modifications
+   *          The modification to push
    */
   public void synchronizeModifications(List<Modification> modifications)
   {
@@ -4231,8 +4223,8 @@
                           modifications);
     LocalBackendModifyOperation localOp = new LocalBackendModifyOperation(op);
 
-    ChangeNumber cn = generateChangeNumber(localOp);
-    OperationContext ctx = new ModifyContext(cn, "schema");
+    CSN csn = generateCSN(localOp);
+    OperationContext ctx = new ModifyContext(csn, "schema");
     localOp.setAttachment(SYNCHROCONTEXT, ctx);
     localOp.setResultCode(ResultCode.SUCCESS);
     synchronize(localOp);
@@ -4290,7 +4282,7 @@
          ReplicationDomainCfg configuration)
   {
     isolationPolicy = configuration.getIsolationPolicy();
-    logChangeNumber = configuration.isLogChangenumber();
+    logCSN = configuration.isLogChangenumber();
     histPurgeDelayInMilliSec =
       configuration.getConflictsHistoricalPurgeDelay()*60*1000;
 
@@ -4400,9 +4392,7 @@
   {
     try
     {
-      DN eclConfigEntryDN = DN.decode(
-          "cn=external changeLog," + configDn);
-
+      DN eclConfigEntryDN = DN.decode("cn=external changeLog," + configDn);
       if (DirectoryServer.getConfigHandler().entryExists(eclConfigEntryDN))
       {
         DirectoryServer.getConfigHandler().deleteEntry(eclConfigEntryDN, null);
@@ -4558,8 +4548,7 @@
        * Check that the ReplicationServer has seen all our previous
        * changes.
        */
-      ChangeNumber replServerMaxChangeNumber =
-        replicationServerState.getChangeNumber(serverId);
+      CSN replServerMaxCSN = replicationServerState.getCSN(serverId);
 
       // we don't want to update from here (a DS) an empty RS because
       // normally the RS should have been updated by other RSes except for
@@ -4567,17 +4556,14 @@
       // ... hence the RS we are connected to should not be empty
       // ... or if it is empty, it is due to a voluntary reset
       // and we don't want to update it with our changes that could be huge.
-      if ((replServerMaxChangeNumber != null) &&
-          (replServerMaxChangeNumber.getSeqnum()!=0))
+      if (replServerMaxCSN != null && replServerMaxCSN.getSeqnum() != 0)
       {
-        ChangeNumber ourMaxChangeNumber = state.getMaxChangeNumber(serverId);
-
-        if ((ourMaxChangeNumber != null) &&
-            (!ourMaxChangeNumber.olderOrEqual(replServerMaxChangeNumber)))
+        CSN ourMaxCSN = state.getMaxCSN(serverId);
+        if (ourMaxCSN != null && !ourMaxCSN.olderOrEqual(replServerMaxCSN))
         {
           pendingChanges.setRecovering(true);
           broker.setRecoveryRequired(true);
-          new RSUpdater(replServerMaxChangeNumber).start();
+          new RSUpdater(replServerMaxCSN).start();
         }
       }
     } catch (Exception e)
@@ -4590,31 +4576,27 @@
   }
 
   /**
-   * Build the list of changes that have been processed by this server
-   * after the ChangeNumber given as a parameter and publish them
-   * using the given session.
+   * Build the list of changes that have been processed by this server after the
+   * CSN given as a parameter and publish them using the given session.
    *
-   * @param startingChangeNumber  The ChangeNumber where we need to start the
-   *                              search
-   * @param session               The session to use to publish the changes
-   *
-   * @return                      A boolean indicating he success of the
-   *                              operation.
-   * @throws Exception            if an Exception happens during the search.
+   * @param startCSN
+   *          The CSN where we need to start the search
+   * @param session
+   *          The session to use to publish the changes
+   * @return A boolean indicating he success of the operation.
+   * @throws Exception
+   *           if an Exception happens during the search.
    */
-  public boolean buildAndPublishMissingChanges(
-      ChangeNumber startingChangeNumber,
-      ReplicationBroker session)
-      throws Exception
+  public boolean buildAndPublishMissingChanges(CSN startCSN,
+      ReplicationBroker session) throws Exception
   {
-    // Trim the changes in replayOperations that are older than
-    // the startingChangeNumber.
+    // Trim the changes in replayOperations that are older than the startCSN.
     synchronized (replayOperations)
     {
-      Iterator<ChangeNumber> it = replayOperations.keySet().iterator();
+      Iterator<CSN> it = replayOperations.keySet().iterator();
       while (it.hasNext())
       {
-        if (it.next().olderOrEqual(startingChangeNumber))
+        if (it.next().olderOrEqual(startCSN))
         {
           it.remove();
         }
@@ -4625,9 +4607,9 @@
       }
     }
 
-    ChangeNumber lastRetrievedChange;
+    CSN lastRetrievedChange;
     InternalSearchOperation op;
-    ChangeNumber currentStartChangeNumber = startingChangeNumber;
+    CSN currentStartCSN = startCSN;
     do
     {
       lastRetrievedChange = null;
@@ -4637,18 +4619,15 @@
       // So we search by interval of 10 seconds
       // and store the results in the replayOperations list
       // so that they are sorted before sending them.
-      long missingChangesDelta = currentStartChangeNumber.getTime() + 10000;
-      ChangeNumber endChangeNumber =
-        new ChangeNumber(
-            missingChangesDelta, 0xffffffff, serverId);
+      long missingChangesDelta = currentStartCSN.getTime() + 10000;
+      CSN endCSN = new CSN(missingChangesDelta, 0xffffffff, serverId);
 
       ScanSearchListener listener =
-        new ScanSearchListener(currentStartChangeNumber, endChangeNumber);
-      op = searchForChangedEntries(
-          baseDn, currentStartChangeNumber, endChangeNumber, listener);
+        new ScanSearchListener(currentStartCSN, endCSN);
+      op = searchForChangedEntries(baseDn, currentStartCSN, endCSN, listener);
 
       // Publish and remove all the changes from the replayOperations list
-      // that are older than the endChangeNumber.
+      // that are older than the endCSN.
       List<FakeOperation> opsToSend = new LinkedList<FakeOperation>();
       synchronized (replayOperations)
       {
@@ -4656,10 +4635,10 @@
         while (itOp.hasNext())
         {
           FakeOperation fakeOp = itOp.next();
-          if ((fakeOp.getChangeNumber().olderOrEqual(endChangeNumber))
-              && state.cover(fakeOp.getChangeNumber()))
+          if ((fakeOp.getCSN().olderOrEqual(endCSN))
+              && state.cover(fakeOp.getCSN()))
           {
-            lastRetrievedChange = fakeOp.getChangeNumber();
+            lastRetrievedChange = fakeOp.getCSN();
             opsToSend.add(fakeOp);
             itOp.remove();
           }
@@ -4677,11 +4656,11 @@
       opsToSend.clear();
       if (lastRetrievedChange != null)
       {
-        currentStartChangeNumber = lastRetrievedChange;
+        currentStartCSN = lastRetrievedChange;
       }
       else
       {
-        currentStartChangeNumber = endChangeNumber;
+        currentStartCSN = endCSN;
       }
 
     } while (pendingChanges.recoveryUntil(lastRetrievedChange) &&
@@ -4692,47 +4671,48 @@
 
 
   /**
-   * Search for the changes that happened since fromChangeNumber
-   * based on the historical attribute. The only changes that will
-   * be send will be the one generated on the serverId provided in
-   * fromChangeNumber.
-   * @param baseDn the base DN
-   * @param fromChangeNumber The ChangeNumber from which we want the changes
-   * @param lastChangeNumber The max ChangeNumber that the search should return
-   * @param resultListener   The listener that will process the entries returned
+   * Search for the changes that happened since fromCSN based on the historical
+   * attribute. The only changes that will be send will be the one generated on
+   * the serverId provided in fromCSN.
+   *
+   * @param baseDn
+   *          the base DN
+   * @param fromCSN
+   *          The CSN from which we want the changes
+   * @param lastCSN
+   *          The max CSN that the search should return
+   * @param resultListener
+   *          The listener that will process the entries returned
    * @return the internal search operation
-   * @throws Exception when raised.
+   * @throws Exception
+   *           when raised.
    */
-  public static InternalSearchOperation searchForChangedEntries(
-    DN baseDn,
-    ChangeNumber fromChangeNumber,
-    ChangeNumber lastChangeNumber,
-    InternalSearchListener resultListener)
-    throws Exception
+  public static InternalSearchOperation searchForChangedEntries(DN baseDn,
+      CSN fromCSN, CSN lastCSN, InternalSearchListener resultListener)
+      throws Exception
   {
     InternalClientConnection conn =
       InternalClientConnection.getRootConnection();
-    Integer serverId = fromChangeNumber.getServerId();
+    Integer serverId = fromCSN.getServerId();
 
     String maxValueForId;
-    if (lastChangeNumber == null)
+    if (lastCSN == null)
     {
       maxValueForId = "ffffffffffffffff" + String.format("%04x", serverId)
                       + "ffffffff";
     }
     else
     {
-      maxValueForId = lastChangeNumber.toString();
+      maxValueForId = lastCSN.toString();
     }
 
     LDAPFilter filter = LDAPFilter.decode(
-       "(&(" + EntryHistorical.HISTORICAL_ATTRIBUTE_NAME + ">=dummy:"
-       + fromChangeNumber + ")(" + EntryHistorical.HISTORICAL_ATTRIBUTE_NAME +
-       "<=dummy:" + maxValueForId + "))");
+        "(&(" + HISTORICAL_ATTRIBUTE_NAME + ">=dummy:" + fromCSN + ")" +
+          "(" + HISTORICAL_ATTRIBUTE_NAME + "<=dummy:" + maxValueForId + "))");
 
-    Set<String> attrs = new LinkedHashSet<String>(1);
-    attrs.add(EntryHistorical.HISTORICAL_ATTRIBUTE_NAME);
-    attrs.add(EntryHistorical.ENTRYUUID_ATTRIBUTE_NAME);
+    Set<String> attrs = new LinkedHashSet<String>(3);
+    attrs.add(HISTORICAL_ATTRIBUTE_NAME);
+    attrs.add(ENTRYUUID_ATTRIBUTE_NAME);
     attrs.add("*");
     return conn.processSearch(
       ByteString.valueOf(baseDn.toString()),
@@ -4744,24 +4724,24 @@
   }
 
   /**
-   * Search for the changes that happened since fromChangeNumber
-   * based on the historical attribute. The only changes that will
-   * be send will be the one generated on the serverId provided in
-   * fromChangeNumber.
-   * @param baseDn the base DN
-   * @param fromChangeNumber The change number from which we want the changes
-   * @param resultListener that will process the entries returned.
+   * Search for the changes that happened since fromCSN based on the historical
+   * attribute. The only changes that will be send will be the one generated on
+   * the serverId provided in fromCSN.
+   *
+   * @param baseDn
+   *          the base DN
+   * @param fromCSN
+   *          The CSN from which we want the changes
+   * @param resultListener
+   *          that will process the entries returned.
    * @return the internal search operation
-   * @throws Exception when raised.
+   * @throws Exception
+   *           when raised.
    */
-  public static InternalSearchOperation searchForChangedEntries(
-    DN baseDn,
-    ChangeNumber fromChangeNumber,
-    InternalSearchListener resultListener)
-    throws Exception
+  public static InternalSearchOperation searchForChangedEntries(DN baseDn,
+      CSN fromCSN, InternalSearchListener resultListener) throws Exception
   {
-    return searchForChangedEntries(
-        baseDn, fromChangeNumber, null, resultListener);
+    return searchForChangedEntries(baseDn, fromCSN, null, resultListener);
   }
 
 
@@ -4778,7 +4758,6 @@
   public long countEntries() throws DirectoryException
   {
     Backend backend = retrievesBackend(baseDn);
-
     if (!backend.supportsLDIFExport())
     {
       Message message = ERR_INIT_EXPORT_NOT_SUPPORTED.get(
@@ -5515,24 +5494,24 @@
      TRACER.debugInfo("[PURGE] purgeConflictsHistorical "
          + "on domain: " + baseDn
          + "endDate:" + new Date(endDate)
-         + "lastChangeNumberPurgedFromHist: "
-         + lastChangeNumberPurgedFromHist.toStringUI());
+         + "lastCSNPurgedFromHist: "
+         + lastCSNPurgedFromHist.toStringUI());
 
      LDAPFilter filter = null;
      try
      {
        filter = LDAPFilter.decode(
          "(" + EntryHistorical.HISTORICAL_ATTRIBUTE_NAME + ">=dummy:"
-         + lastChangeNumberPurgedFromHist + ")");
+         + lastCSNPurgedFromHist + ")");
 
      } catch (LDAPException e)
      {
        // Not possible. We know the filter just above is correct.
      }
 
-     Set<String> attrs = new LinkedHashSet<String>(1);
-     attrs.add(EntryHistorical.HISTORICAL_ATTRIBUTE_NAME);
-     attrs.add(EntryHistorical.ENTRYUUID_ATTRIBUTE_NAME);
+     Set<String> attrs = new LinkedHashSet<String>(3);
+     attrs.add(HISTORICAL_ATTRIBUTE_NAME);
+     attrs.add(ENTRYUUID_ATTRIBUTE_NAME);
      attrs.add("*");
      InternalSearchOperation searchOp =  conn.processSearch(
          ByteString.valueOf(baseDn.toString()),
@@ -5544,7 +5523,7 @@
      int count = 0;
 
      if (task != null)
-       task.setProgressStats(lastChangeNumberPurgedFromHist, count);
+       task.setProgressStats(lastCSNPurgedFromHist, count);
 
      for (SearchResultEntry entry : searchOp.getSearchEntries())
      {
@@ -5556,7 +5535,7 @@
        }
 
        EntryHistorical entryHist = EntryHistorical.newInstanceFromEntry(entry);
-       lastChangeNumberPurgedFromHist = entryHist.getOldestCN();
+       lastCSNPurgedFromHist = entryHist.getOldestCSN();
        entryHist.setPurgeDelay(this.histPurgeDelayInMilliSec);
        Attribute attr = entryHist.encodeAndPurge();
        count += entryHist.getLastPurgedValuesCount();
@@ -5583,7 +5562,7 @@
        }
        else if (task != null)
        {
-         task.setProgressStats(lastChangeNumberPurgedFromHist, count);
+         task.setProgressStats(lastCSNPurgedFromHist, count);
        }
      }
   }

--
Gitblit v1.10.0