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

Jean-Noel Rouvignac
08.07.2013 3c062316441f2adb96afb6a6a98c09d91c27bd97
OPENDJ-1116 Introduce abstraction for the changelog DB


Changes after review from Matthew Swift.
Hid ChangeNumberIndexDB.nextChangeNumber() from client code.


ChangeNumberIndexDB.java, JEChangeNumberIndexDB.java:
Removed nextChangeNumber().
Changed addRecord() to return the assigned changeNumber.

ECLServerHandler.java, CNIndexRecord.java:
Consequence of the change above.
4 files modified
61 ■■■■■ changed files
opends/src/server/org/opends/server/replication/server/ECLServerHandler.java 13 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/changelog/api/CNIndexRecord.java 24 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java 9 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java 15 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
@@ -1384,17 +1384,12 @@
  private void assignNewChangeNumberAndStore(ECLUpdateMsg change)
      throws ChangelogException
  {
    ChangeNumberIndexDB cnIndexDB = replicationServer.getChangeNumberIndexDB();
    change.setChangeNumber(cnIndexDB.nextChangeNumber());
    final CNIndexRecord record = new CNIndexRecord(previousCookie.toString(),
        change.getBaseDN(), change.getUpdateMsg().getCSN());
    // store in CNIndexDB the pair
    // (change number of the current change, state before this change)
    cnIndexDB.addRecord(new CNIndexRecord(
        change.getChangeNumber(),
        previousCookie.toString(),
        change.getBaseDN(),
        change.getUpdateMsg().getCSN()));
    change.setChangeNumber(
        replicationServer.getChangeNumberIndexDB().addRecord(record));
  }
  /**
opends/src/server/org/opends/server/replication/server/changelog/api/CNIndexRecord.java
@@ -37,10 +37,10 @@
{
  /** This is the key used to store the rest of the . */
  private long changeNumber;
  private String previousCookie;
  private DN baseDN;
  private CSN csn;
  private final long changeNumber;
  private final String previousCookie;
  private final DN baseDN;
  private final CSN csn;
  /**
   * Builds an instance of this class.
@@ -64,6 +64,22 @@
  }
  /**
   * Builds an instance of this class, with changeNumber equal to 0.
   *
   * @param previousCookie
   *          the previous cookie
   * @param baseDN
   *          the baseDN
   * @param csn
   *          the replication CSN field
   * @see #CNIndexRecord(long, String, DN, CSN)
   */
  public CNIndexRecord(String previousCookie, DN baseDN, CSN csn)
  {
    this(0, previousCookie, baseDN, csn);
  }
  /**
   * Getter for the baseDN field.
   *
   * @return the baseDN
opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java
@@ -42,12 +42,6 @@
 */
public interface ChangeNumberIndexDB
{
  /**
   * Generates the next change number.
   *
   * @return The newly generated change number
   */
  long nextChangeNumber();
  /**
   * Returns the last generated change number.
@@ -96,10 +90,11 @@
   *
   * @param record
   *          The {@link CNIndexRecord} to add to this DB.
   * @return the change number associated to this record on adding to this DB
   * @throws ChangelogException
   *           if a database problem occurs.
   */
  void addRecord(CNIndexRecord record) throws ChangelogException;
  long addRecord(CNIndexRecord record) throws ChangelogException;
  /**
   * Generate a new {@link ChangeNumberIndexDBCursor} that allows to browse the
opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
@@ -153,12 +153,17 @@
  /** {@inheritDoc} */
  @Override
  public void addRecord(CNIndexRecord record) throws ChangelogException
  public long addRecord(CNIndexRecord record) throws ChangelogException
  {
    db.addRecord(record);
    long changeNumber = nextChangeNumber();
    final CNIndexRecord newRecord =
        new CNIndexRecord(changeNumber, record.getPreviousCookie(), record
            .getBaseDN(), record.getCSN());
    db.addRecord(newRecord);
    if (debugEnabled())
      TRACER.debugInfo("In JEChangeNumberIndexDB.add, added: " + record);
      TRACER.debugInfo("In JEChangeNumberIndexDB.add, added: " + newRecord);
    return changeNumber;
  }
  /** {@inheritDoc} */
@@ -175,9 +180,7 @@
    return db.readLastRecord();
  }
  /** {@inheritDoc} */
  @Override
  public long nextChangeNumber()
  private long nextChangeNumber()
  {
    return lastGeneratedChangeNumber.incrementAndGet();
  }