From bd724fad0c954f1e607a0a90cbca3eb41d1f2460 Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Mon, 17 Sep 2007 08:00:37 +0000
Subject: [PATCH] Fixes repl init and total update #2253 #845 #1733
---
opends/src/server/org/opends/server/replication/server/ReplicationCache.java | 95 +++++++++++++++++++++++------------------------
1 files changed, 46 insertions(+), 49 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationCache.java b/opends/src/server/org/opends/server/replication/server/ReplicationCache.java
index 990eb1f..6fd8925 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationCache.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationCache.java
@@ -959,19 +959,6 @@
}
/**
- * Sets the replication server informations for the provided
- * handler from the provided ReplServerInfoMessage.
- *
- * @param handler The server handler from which the info was received.
- * @param infoMsg The information message that was received.
- */
- public void setReplServerInfo(
- ServerHandler handler, ReplServerInfoMessage infoMsg)
- {
- handler.setReplServerInfo(infoMsg);
- }
-
- /**
* Sets the provided value as the new in memory generationId.
*
* @param generationId The new value of generationId.
@@ -1007,20 +994,27 @@
*
* @param senderHandler The handler associated to the server
* that requested to reset the generationId.
+ * @param genIdMsg The reset generation ID msg received.
*/
- public void resetGenerationId(ServerHandler senderHandler)
+ public void resetGenerationId(ServerHandler senderHandler,
+ ResetGenerationId genIdMsg)
{
+ long newGenId = genIdMsg.getGenerationId();
+
if (debugEnabled())
TRACER.debugInfo(
"In " + this.replicationServer.getMonitorInstanceName() +
" baseDN=" + baseDn +
- " RCache.resetGenerationId");
+ " RCache.resetGenerationId received new ref genId=" + newGenId);
// Notifies the others LDAP servers that from now on
// they have the bad generationId
for (ServerHandler handler : connectedServers.values())
{
- handler.resetGenerationId();
+ if (newGenId != handler.getGenerationId())
+ {
+ handler.resetGenerationId();
+ }
}
// Propagates the reset message to the others replication servers
@@ -1031,7 +1025,7 @@
{
try
{
- handler.sendGenerationId(new ResetGenerationId());
+ handler.sendGenerationId(genIdMsg);
}
catch (IOException e)
{
@@ -1041,45 +1035,48 @@
}
}
- // Reset the localchange and state db for the current domain
- synchronized (sourceDbHandlers)
+ if (this.generationId != newGenId)
{
- for (DbHandler dbHandler : sourceDbHandlers.values())
+ // Reset the localchange and state db for the current domain
+ synchronized (sourceDbHandlers)
{
- try
+ for (DbHandler dbHandler : sourceDbHandlers.values())
{
- dbHandler.clear();
+ try
+ {
+ dbHandler.clear();
+ }
+ catch (Exception e)
+ {
+ // TODO: i18n
+ logError(Message.raw(
+ "Exception caught while clearing dbHandler:" +
+ e.getLocalizedMessage()));
+ }
}
- catch (Exception e)
- {
- // TODO: i18n
- logError(Message.raw(
- "Exception caught while clearing dbHandler:" +
- e.getLocalizedMessage()));
- }
+ sourceDbHandlers.clear();
+
+ if (debugEnabled())
+ TRACER.debugInfo(
+ "In " + this.replicationServer.getMonitorInstanceName() +
+ " baseDN=" + baseDn +
+ " The source db handler has been cleared");
}
- sourceDbHandlers.clear();
+ try
+ {
+ replicationServer.clearGenerationId(baseDn);
+ }
+ catch (Exception e)
+ {
+ // TODO: i18n
+ logError(Message.raw(
+ "Exception caught while clearing generationId:" +
+ e.getLocalizedMessage()));
+ }
- if (debugEnabled())
- TRACER.debugInfo(
- "In " + this.replicationServer.getMonitorInstanceName() +
- " baseDN=" + baseDn +
- " The source db handler has been cleared");
+ // Reset the in memory domain generationId
+ generationId = newGenId;
}
- try
- {
- replicationServer.clearGenerationId(baseDn);
- }
- catch (Exception e)
- {
- // TODO: i18n
- logError(Message.raw(
- "Exception caught while clearing generationId:" +
- e.getLocalizedMessage()));
- }
-
- // Reset the in memory domain generationId
- generationId = -1;
}
/**
--
Gitblit v1.10.0