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

Jean-Noel Rouvignac
06.02.2013 41f0cb7c09c0bcd82c9c828c84a48fd72fb36fbc
opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
@@ -1313,10 +1313,6 @@
                ChangeNumber cnFromDraftCNDb = draftCNDbIter.getChangeNumber();
                String dnFromDraftCNDb = draftCNDbIter.getBaseDN();
                // are replogcn and DraftCNcn should be the same change ?
                int areCNEqual = cnFromChangelogDb.compareTo(cnFromDraftCNDb);
                int areDNEqual = dnFromChangelogDb.compareTo(dnFromDraftCNDb);
                if (debugEnabled())
                  TRACER.debugInfo("getNextECLUpdate generating draftCN "
                    + " comparing the 2 db DNs :"
@@ -1324,7 +1320,9 @@
                    + " timestamps:" + new Date(cnFromChangelogDb.getTime())
                    + " ?older" +   new Date(cnFromDraftCNDb.getTime()));
                if ((areDNEqual==0) && (areCNEqual==0))
                // should replogcn and DraftCN be the same change ?
                if (areSameChange(cnFromChangelogDb, dnFromChangelogDb,
                    cnFromDraftCNDb, dnFromDraftCNDb))
                {
                  // same domain and same CN => same change
@@ -1334,9 +1332,7 @@
                      + " assigning draftCN=" + draftCNDbIter.getDraftCN()
                      + " to change=" + oldestChange);
                  oldestChange.setDraftChangeNumber(
                      draftCNDbIter.getDraftCN());
                  oldestChange.setDraftChangeNumber(draftCNDbIter.getDraftCN());
                  break;
                }
                else
@@ -1369,19 +1365,7 @@
                      if (isEndOfDraftCNReached)
                      {
                        // we are at the end of the DraftCNdb in the append mode
                        // generate a new draftCN and assign to this change
                        oldestChange.setDraftChangeNumber(
                            replicationServer.getNewDraftCN());
                        // store in DraftCNdb the pair
                        // (draftCN_of_the_cur_change, state_before_this_change)
                        draftCNDb.add(
                            oldestChange.getDraftChangeNumber(),
                            previousCookie.toString(),
                            oldestChange.getBaseDN(),
                            oldestChange.getUpdateMsg().getChangeNumber());
                        storeNewChange(draftCNDb, oldestChange, oldestChange.getBaseDN());
                        break;
                      }
                    }
@@ -1407,17 +1391,7 @@
              else
              {
                // we are at the end of the DraftCNdb in the append mode
                // store in DraftCNdb the pair
                // (DraftCN of the current change, state before this change)
                oldestChange.setDraftChangeNumber(
                    replicationServer.getNewDraftCN());
                draftCNDb.add(
                    oldestChange.getDraftChangeNumber(),
                    this.previousCookie.toString(),
                    suffix,
                    oldestChange.getUpdateMsg().getChangeNumber());
                storeNewChange(draftCNDb, oldestChange, suffix);
                break;
              }
            } // while DraftCN
@@ -1480,17 +1454,7 @@
          {
            // should generate DraftCN
            DraftCNDbHandler draftCNDb =replicationServer.getDraftCNDbHandler();
            oldestChange.setDraftChangeNumber(
                replicationServer.getNewDraftCN());
            // store in DraftCNdb the pair
            // (DraftCN of the current change, state before this change)
            draftCNDb.add(
                oldestChange.getDraftChangeNumber(),
                this.previousCookie.toString(),
                suffix,
                oldestChange.getUpdateMsg().getChangeNumber());
            storeNewChange(draftCNDb, oldestChange, suffix);
          }
        }
      }
@@ -1526,6 +1490,29 @@
    return oldestChange;
  }
  private boolean areSameChange(ChangeNumber cn1, String dn1, ChangeNumber cn2,
      String dn2)
  {
    boolean sameDN = dn1.compareTo(dn2) == 0;
    boolean sameCN = cn1.compareTo(cn2) == 0;
    return sameDN && sameCN;
  }
  private void storeNewChange(DraftCNDbHandler draftCNDb, ECLUpdateMsg change,
      String suffix)
  {
    // generate a new draftCN and assign to this change
    change.setDraftChangeNumber(replicationServer.getNewDraftCN());
    // store in DraftCNdb the pair
    // (DraftCN of the current change, state before this change)
    draftCNDb.add(
        change.getDraftChangeNumber(),
        previousCookie.toString(),
        suffix,
        change.getUpdateMsg().getChangeNumber());
  }
  /**
   * Terminates the first (non persistent) phase of the search on the ECL.
   */