From 5c87cce021cba14003f8371f8e496aefe68724bc Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Thu, 09 Jun 2011 21:24:05 +0000
Subject: [PATCH] Fix issue OPENDJ-67: Investigate ECL change number consistency across replications servers which have been subjected to different purging policies.
---
opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java | 14 +++++++++++++-
1 files changed, 13 insertions(+), 1 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
index 5c96d23..437c634 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -1860,6 +1860,7 @@
int firstDraftCN;
int lastDraftCN;
+ Boolean dbEmpty = false;
Long newestDate = 0L;
DraftCNDbHandler draftCNDbH = this.getDraftCNDbHandler();
@@ -1870,6 +1871,7 @@
String domainForLastSeqnum = null;
if (firstDraftCN < 1)
{
+ dbEmpty = true;
firstDraftCN = 0;
lastDraftCN = 0;
}
@@ -1912,8 +1914,11 @@
if (domainsServerStateForLastSeqnum == null)
{
// Count changes of this domain from the beginning of the changelog
+ ChangeNumber trimCN =
+ new ChangeNumber(rsd.getLatestDomainTrimDate(), 0,0);
ec = rsd.getEligibleCount(
- new ServerState(), crossDomainEligibleCN);
+ rsd.getStartState().duplicateOnlyOlderThan(trimCN),
+ crossDomainEligibleCN);
}
else
{
@@ -1947,6 +1952,13 @@
firstDraftCN = 1;
}
}
+ if (dbEmpty)
+ {
+ // The database was empty, just keep increasing numbers since last time
+ // we generated one DraftCN.
+ firstDraftCN += lastGeneratedDraftCN;
+ lastDraftCN += lastGeneratedDraftCN;
+ }
return new int[]{firstDraftCN, lastDraftCN};
}
--
Gitblit v1.10.0