From 3108952a616e5a7548f646555c716bdc52db91ea Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Mon, 31 May 2010 12:06:59 +0000
Subject: [PATCH] Resolve an issue where some changes might appear to be missing after restoring a backend. A replayed change that resolve in no change still must update the historical information.
---
opends/src/server/org/opends/server/replication/server/MsgQueue.java | 35 ++++++++++++++++++++---------------
1 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/MsgQueue.java b/opends/src/server/org/opends/server/replication/server/MsgQueue.java
index 1cb9ff3..270a184 100644
--- a/opends/src/server/org/opends/server/replication/server/MsgQueue.java
+++ b/opends/src/server/org/opends/server/replication/server/MsgQueue.java
@@ -35,7 +35,6 @@
import org.opends.messages.Message;
import org.opends.server.replication.common.ChangeNumber;
import org.opends.server.replication.protocol.UpdateMsg;
-import java.util.Arrays;
/**
* This class is used to build ordered lists of UpdateMsg.
@@ -132,23 +131,29 @@
boolean sameMsgs = false;
try
{
- sameMsgs = Arrays.equals(
- msgSameChangeNumber.getBytes(),update.getBytes());
+ if (
+ (msgSameChangeNumber.getBytes().length == update.getBytes().length)
+ && (msgSameChangeNumber.isAssured() == update.isAssured())
+ && (msgSameChangeNumber.getVersion() == update.getVersion()) )
+ {
+ sameMsgs = true;
+ }
+
+
+ if (!sameMsgs)
+ {
+ // Adding 2 msgs with the same ChangeNumber is ok only when
+ // the 2 masgs are the same
+ bytesCount += (update.size() - msgSameChangeNumber.size());
+ Message errMsg = ERR_RSQUEUE_DIFFERENT_MSGS_WITH_SAME_CN.get(
+ msgSameChangeNumber.getChangeNumber().toString(),
+ msgSameChangeNumber.toString(),
+ update.toString());
+ logError(errMsg);
+ }
}
catch(Exception e)
{}
-
- if (!sameMsgs)
- {
- // Adding 2 msgs with the same ChangeNumber is ok only when the 2 msgs
- // are the same
- bytesCount += (update.size() - msgSameChangeNumber.size());
- Message errMsg = ERR_RSQUEUE_DIFFERENT_MSGS_WITH_SAME_CN.get(
- msgSameChangeNumber.toString(),
- msgSameChangeNumber.toString(),
- update.toString());
- logError(errMsg);
- }
}
else
{
--
Gitblit v1.10.0