From 16bc17a5dec28b9bbcc211c9a6b7859b5b668848 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 02 Oct 2014 14:03:07 +0000
Subject: [PATCH] OPENDJ-1542 Remove ReplicationServer.getECLChangeNumberLimits()

---
 opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java |   54 ++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 34 insertions(+), 20 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
index c3979d9..16e0ae6 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -38,14 +38,16 @@
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchScope;
 import org.opends.server.admin.server.ConfigurationChangeListener;
-import org.opends.server.admin.std.meta.VirtualAttributeCfgDefn.ConflictBehavior;
 import org.opends.server.admin.std.meta.ReplicationServerCfgDefn.ReplicationDBImplementation;
+import org.opends.server.admin.std.meta.VirtualAttributeCfgDefn.ConflictBehavior;
 import org.opends.server.admin.std.server.ReplicationServerCfg;
 import org.opends.server.admin.std.server.UserDefinedVirtualAttributeCfg;
 import org.opends.server.api.VirtualAttributeProvider;
 import org.opends.server.backends.ChangelogBackend;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.replication.common.*;
+import org.opends.server.replication.common.CSN;
+import org.opends.server.replication.common.MultiDomainServerState;
+import org.opends.server.replication.common.ServerState;
 import org.opends.server.replication.plugin.MultimasterReplication;
 import org.opends.server.replication.protocol.*;
 import org.opends.server.replication.server.changelog.api.ChangeNumberIndexDB;
@@ -1225,38 +1227,50 @@
   }
 
   /**
-   * Get the oldest and newest change numbers.
+   * Returns the oldest change number in the change number index DB.
    *
-   * @return an array of size 2 holding the oldest and newest change numbers at
-   *         indexes 0 and 1.
+   * @return the oldest change number in the change number index DB
    * @throws DirectoryException
-   *           When it happens.
+   *           When a problem happens
    */
-  public long[] getECLChangeNumberLimits() throws DirectoryException
+  public long getOldestChangeNumber() throws DirectoryException
   {
     try
     {
       final ChangeNumberIndexDB cnIndexDB = getChangeNumberIndexDB();
       final ChangeNumberIndexRecord oldestRecord = cnIndexDB.getOldestRecord();
-      if (oldestRecord == null)
+      if (oldestRecord != null)
       {
-        // The database is empty, just keep increasing numbers since last time
-        // we generated one change number.
-        final long lastGeneratedCN = cnIndexDB.getLastGeneratedChangeNumber();
-        return new long[] { lastGeneratedCN, lastGeneratedCN };
+        return oldestRecord.getChangeNumber();
       }
+      // database is empty
+      return cnIndexDB.getLastGeneratedChangeNumber();
+    }
+    catch (ChangelogException e)
+    {
+      throw new DirectoryException(ResultCode.OPERATIONS_ERROR, e);
+    }
+  }
 
+  /**
+   * Returns the newest change number in the change number index DB.
+   *
+   * @return the newest change number in the change number index DB
+   * @throws DirectoryException
+   *           When a problem happens
+   */
+  public long getNewestChangeNumber() throws DirectoryException
+  {
+    try
+    {
+      final ChangeNumberIndexDB cnIndexDB = getChangeNumberIndexDB();
       final ChangeNumberIndexRecord newestRecord = cnIndexDB.getNewestRecord();
-      if (newestRecord == null)
+      if (newestRecord != null)
       {
-        // Edge case: DB was cleaned (or purged) in between calls to
-        // getOldest*() and getNewest*().
-        // The only remaining solution is to fail fast.
-        throw new DirectoryException(ResultCode.OPERATIONS_ERROR,
-            ERR_READING_OLDEST_THEN_NEWEST_IN_CHANGENUMBER_DATABASE.get());
+        return newestRecord.getChangeNumber();
       }
-      return new long[] { oldestRecord.getChangeNumber(),
-        newestRecord.getChangeNumber() };
+      // database is empty
+      return cnIndexDB.getLastGeneratedChangeNumber();
     }
     catch (ChangelogException e)
     {

--
Gitblit v1.10.0