From 49f2c6f7165ea94640716230c610a154a7f502d5 Mon Sep 17 00:00:00 2001
From: mrossign <mrossign@localhost>
Date: Thu, 02 Apr 2009 09:44:38 +0000
Subject: [PATCH] Fix for 2963: dsreplication status large value for missing changes dsreplication status sometimes returns very unexpected high values. This  is due to the fact that the replication server monitoring algorithm  sometimes does not compute well the max server state available in the  whole topology and thus is sometimes calling  ChangeNumber.diffSeqNum(CN1,CN2) with a CN1 lower than CN2.

---
 opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
index a9ade5f..5729a31 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -2306,6 +2306,7 @@
       // - from our own local db state
       // - whatever they are directly or undirectly connected
       ServerState dbServerState = getDbServerState();
+      wrkMonitorData.setRSState(replicationServer.getServerId(), dbServerState);
       Iterator<Short> it = dbServerState.iterator();
       while (it.hasNext())
       {
@@ -2471,8 +2472,9 @@
         while (lsidIterator.hasNext())
         {
           short sid = lsidIterator.next();
-          wrkMonitorData.setLDAPServerState(sid,
-            msg.getLDAPServerState(sid).duplicate());
+          ServerState dsServerState = msg.getLDAPServerState(sid);
+          wrkMonitorData.setMaxCNs(dsServerState);
+          wrkMonitorData.setLDAPServerState(sid, dsServerState);
           wrkMonitorData.setFirstMissingDate(sid,
             msg.getLDAPApproxFirstMissingDate(sid));
         }

--
Gitblit v1.10.0