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/ChangelogBaseDNVirtualAttributeProvider.java | 27 ++++----
opendj3-server-dev/src/server/org/opends/server/replication/server/LastChangeNumberVirtualAttributeProvider.java | 32 ++++------
opendj3-server-dev/src/server/org/opends/server/replication/server/FirstChangeNumberVirtualAttributeProvider.java | 32 ++++------
opendj3-server-dev/src/server/org/opends/server/replication/server/LastCookieVirtualProvider.java | 24 +++-----
opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java | 54 +++++++++++------
5 files changed, 84 insertions(+), 85 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java b/opendj3-server-dev/src/server/org/opends/server/replication/server/ChangelogBaseDNVirtualAttributeProvider.java
similarity index 81%
rename from opendj3-server-dev/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java
rename to opendj3-server-dev/src/server/org/opends/server/replication/server/ChangelogBaseDNVirtualAttributeProvider.java
index 8d68dac..719f7b5 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/common/ChangelogBaseDNVirtualAttributeProvider.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/server/ChangelogBaseDNVirtualAttributeProvider.java
@@ -24,14 +24,16 @@
* Copyright 2009 Sun Microsystems, Inc.
* Portions Copyright 2011-2014 ForgeRock AS
*/
-package org.opends.server.replication.common;
+package org.opends.server.replication.server;
-import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.admin.std.server.UserDefinedVirtualAttributeCfg;
import org.opends.server.api.VirtualAttributeProvider;
import org.opends.server.core.SearchOperation;
-import org.opends.server.types.*;
+import org.opends.server.types.Attribute;
+import org.opends.server.types.Attributes;
+import org.opends.server.types.Entry;
+import org.opends.server.types.VirtualAttributeRule;
import org.opends.server.util.ServerConstants;
import static org.opends.messages.ExtensionMessages.*;
@@ -40,8 +42,7 @@
* This class implements a virtual attribute provider that specifies the
* changelog attribute of the root DSE entry that contain the baseDn of the ECL.
*/
-public class ChangelogBaseDNVirtualAttributeProvider
- extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
+class ChangelogBaseDNVirtualAttributeProvider extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
{
/**
@@ -61,14 +62,14 @@
}
/** {@inheritDoc} */
- @Override()
+ @Override
public boolean isMultiValued()
{
return false;
}
/** {@inheritDoc} */
- @Override()
+ @Override
public Attribute getValues(Entry entry, VirtualAttributeRule rule)
{
if (values == null)
@@ -80,7 +81,7 @@
}
/** {@inheritDoc} */
- @Override()
+ @Override
public boolean isSearchable(VirtualAttributeRule rule,
SearchOperation searchOperation,
boolean isPreIndexed)
@@ -90,14 +91,12 @@
}
/** {@inheritDoc} */
- @Override()
- public void processSearch(VirtualAttributeRule rule,
- SearchOperation searchOperation)
+ @Override
+ public void processSearch(VirtualAttributeRule rule, SearchOperation searchOperation)
{
searchOperation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
- final LocalizableMessage message = ERR_CHANGELOGBASEDN_VATTR_NOT_SEARCHABLE.get(
- rule.getAttributeType().getNameOrOID());
- searchOperation.appendErrorMessage(message);
+ searchOperation.appendErrorMessage(ERR_CHANGELOGBASEDN_VATTR_NOT_SEARCHABLE.get(
+ rule.getAttributeType().getNameOrOID()));
}
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java b/opendj3-server-dev/src/server/org/opends/server/replication/server/FirstChangeNumberVirtualAttributeProvider.java
similarity index 79%
rename from opendj3-server-dev/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java
rename to opendj3-server-dev/src/server/org/opends/server/replication/server/FirstChangeNumberVirtualAttributeProvider.java
index 4b46bcc..931a16c 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/common/FirstChangeNumberVirtualAttributeProvider.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/server/FirstChangeNumberVirtualAttributeProvider.java
@@ -24,24 +24,24 @@
* Copyright 2009 Sun Microsystems, Inc.
* Portions Copyright 2011-2014 ForgeRock AS
*/
-package org.opends.server.replication.common;
+package org.opends.server.replication.server;
-import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.admin.std.server.UserDefinedVirtualAttributeCfg;
import org.opends.server.api.VirtualAttributeProvider;
import org.opends.server.core.SearchOperation;
-import org.opends.server.replication.server.ReplicationServer;
-import org.opends.server.types.*;
+import org.opends.server.types.Attribute;
+import org.opends.server.types.Attributes;
+import org.opends.server.types.Entry;
+import org.opends.server.types.VirtualAttributeRule;
import static org.opends.messages.ExtensionMessages.*;
/**
* Virtual attribute returning the oldest change number from the changelogDB.
*/
-public class FirstChangeNumberVirtualAttributeProvider
- extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
+class FirstChangeNumberVirtualAttributeProvider extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
{
/** The tracer object for the debug logger. */
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
@@ -56,12 +56,11 @@
*/
public FirstChangeNumberVirtualAttributeProvider(ReplicationServer replicationServer)
{
- super();
this.replicationServer = replicationServer;
}
/** {@inheritDoc} */
- @Override()
+ @Override
public boolean isMultiValued()
{
return false;
@@ -76,7 +75,7 @@
}
/** {@inheritDoc} */
- @Override()
+ @Override
public Attribute getValues(Entry entry,VirtualAttributeRule rule)
{
String value = "0";
@@ -84,8 +83,7 @@
{
if (replicationServer != null)
{
- final long[] limits = replicationServer.getECLChangeNumberLimits();
- value = String.valueOf(limits[0]);
+ value = String.valueOf(replicationServer.getOldestChangeNumber());
}
}
catch(Exception e)
@@ -100,7 +98,7 @@
}
/** {@inheritDoc} */
- @Override()
+ @Override
public boolean isSearchable(VirtualAttributeRule rule,
SearchOperation searchOperation,
boolean isPreIndexed)
@@ -111,14 +109,12 @@
}
/** {@inheritDoc} */
- @Override()
- public void processSearch(VirtualAttributeRule rule,
- SearchOperation searchOperation)
+ @Override
+ public void processSearch(VirtualAttributeRule rule, SearchOperation searchOperation)
{
searchOperation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
- final LocalizableMessage message = ERR_FIRSTCHANGENUMBER_VATTR_NOT_SEARCHABLE.get(
- rule.getAttributeType().getNameOrOID());
- searchOperation.appendErrorMessage(message);
+ searchOperation.appendErrorMessage(ERR_FIRSTCHANGENUMBER_VATTR_NOT_SEARCHABLE.get(
+ rule.getAttributeType().getNameOrOID()));
}
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java b/opendj3-server-dev/src/server/org/opends/server/replication/server/LastChangeNumberVirtualAttributeProvider.java
similarity index 79%
rename from opendj3-server-dev/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java
rename to opendj3-server-dev/src/server/org/opends/server/replication/server/LastChangeNumberVirtualAttributeProvider.java
index 04e30f8..6a6f425 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/common/LastChangeNumberVirtualAttributeProvider.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/server/LastChangeNumberVirtualAttributeProvider.java
@@ -24,24 +24,24 @@
* Copyright 2009 Sun Microsystems, Inc.
* Portions Copyright 2011-2014 ForgeRock AS
*/
-package org.opends.server.replication.common;
+package org.opends.server.replication.server;
-import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.admin.std.server.UserDefinedVirtualAttributeCfg;
import org.opends.server.api.VirtualAttributeProvider;
import org.opends.server.core.SearchOperation;
-import org.opends.server.replication.server.ReplicationServer;
-import org.opends.server.types.*;
+import org.opends.server.types.Attribute;
+import org.opends.server.types.Attributes;
+import org.opends.server.types.Entry;
+import org.opends.server.types.VirtualAttributeRule;
import static org.opends.messages.ExtensionMessages.*;
/**
* Virtual attribute returning the newest change number from the changelogDB.
*/
-public class LastChangeNumberVirtualAttributeProvider
- extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
+class LastChangeNumberVirtualAttributeProvider extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
{
/** The tracer object for the debug logger. */
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
@@ -56,12 +56,11 @@
*/
public LastChangeNumberVirtualAttributeProvider(ReplicationServer replicationServer)
{
- super();
this.replicationServer = replicationServer;
}
/** {@inheritDoc} */
- @Override()
+ @Override
public boolean isMultiValued()
{
return false;
@@ -76,7 +75,7 @@
}
/** {@inheritDoc} */
- @Override()
+ @Override
public Attribute getValues(Entry entry,VirtualAttributeRule rule)
{
String value = "0";
@@ -84,8 +83,7 @@
{
if (replicationServer != null)
{
- final long[] limits = replicationServer.getECLChangeNumberLimits();
- value = String.valueOf(limits[1]);
+ value = String.valueOf(replicationServer.getNewestChangeNumber());
}
}
catch(Exception e)
@@ -100,7 +98,7 @@
}
/** {@inheritDoc} */
- @Override()
+ @Override
public boolean isSearchable(VirtualAttributeRule rule,
SearchOperation searchOperation,
boolean isPreIndexed)
@@ -111,14 +109,12 @@
}
/** {@inheritDoc} */
- @Override()
- public void processSearch(VirtualAttributeRule rule,
- SearchOperation searchOperation)
+ @Override
+ public void processSearch(VirtualAttributeRule rule, SearchOperation searchOperation)
{
searchOperation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
- final LocalizableMessage message = ERR_LASTCHANGENUMBER_VATTR_NOT_SEARCHABLE.get(
- rule.getAttributeType().getNameOrOID());
- searchOperation.appendErrorMessage(message);
+ searchOperation.appendErrorMessage(ERR_LASTCHANGENUMBER_VATTR_NOT_SEARCHABLE.get(rule.getAttributeType()
+ .getNameOrOID()));
}
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java b/opendj3-server-dev/src/server/org/opends/server/replication/server/LastCookieVirtualProvider.java
similarity index 86%
rename from opendj3-server-dev/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java
rename to opendj3-server-dev/src/server/org/opends/server/replication/server/LastCookieVirtualProvider.java
index 9dcd6f2..565376b 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/common/LastCookieVirtualProvider.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/server/LastCookieVirtualProvider.java
@@ -24,15 +24,13 @@
* Copyright 2009 Sun Microsystems, Inc.
* Portions Copyright 2011-2014 ForgeRock AS
*/
-package org.opends.server.replication.common;
+package org.opends.server.replication.server;
-import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.admin.std.server.UserDefinedVirtualAttributeCfg;
import org.opends.server.api.VirtualAttributeProvider;
import org.opends.server.core.SearchOperation;
-import org.opends.server.replication.server.ReplicationServer;
import org.opends.server.types.Attribute;
import org.opends.server.types.Attributes;
import org.opends.server.types.Entry;
@@ -46,8 +44,7 @@
* that contains the last (newest) cookie (cross domain state)
* available in the server.
*/
-public class LastCookieVirtualProvider
- extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
+class LastCookieVirtualProvider extends VirtualAttributeProvider<UserDefinedVirtualAttributeCfg>
{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
@@ -61,28 +58,26 @@
*/
public LastCookieVirtualProvider(ReplicationServer replicationServer)
{
- super();
this.replicationServer = replicationServer;
}
/** {@inheritDoc} */
- @Override()
+ @Override
public boolean hasValue(Entry entry, VirtualAttributeRule rule)
{
// There's only a value for the rootDSE, i.e. the Null DN.
return entry.getName().isRootDN();
-
}
/** {@inheritDoc} */
- @Override()
+ @Override
public boolean isMultiValued()
{
return false;
}
/** {@inheritDoc} */
- @Override()
+ @Override
public Attribute getValues(Entry entry, VirtualAttributeRule rule)
{
try
@@ -101,7 +96,7 @@
}
/** {@inheritDoc} */
- @Override()
+ @Override
public boolean isSearchable(VirtualAttributeRule rule,
SearchOperation searchOperation,
boolean isPreIndexed)
@@ -112,14 +107,13 @@
}
/** {@inheritDoc} */
- @Override()
+ @Override
public void processSearch(VirtualAttributeRule rule,
SearchOperation searchOperation)
{
searchOperation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
- final LocalizableMessage message = ERR_LASTCOOKIE_VATTR_NOT_SEARCHABLE.get(
- rule.getAttributeType().getNameOrOID());
- searchOperation.appendErrorMessage(message);
+ searchOperation.appendErrorMessage(ERR_LASTCOOKIE_VATTR_NOT_SEARCHABLE.get(
+ rule.getAttributeType().getNameOrOID()));
}
}
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