From 8f75a9918071b92a1320d08b6d75e69c1d8bd217 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Fri, 20 Feb 2009 08:44:40 +0000
Subject: [PATCH] Fix for 3804 : improve replication monitoring

---
 opends/src/server/org/opends/server/replication/service/ReplicationBroker.java |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java b/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java
index f79d4c3..78a036e 100644
--- a/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java
+++ b/opends/src/server/org/opends/server/replication/service/ReplicationBroker.java
@@ -137,6 +137,7 @@
   private List<RSInfo> rsList = new ArrayList<RSInfo>();
 
   private long generationID;
+  private int updateDoneCount = 0;
 
   /**
    * Creates a new ReplicationServer Broker for a particular ReplicationDomain.
@@ -1363,6 +1364,13 @@
       try
       {
         ReplicationMsg msg = session.receive();
+        if (msg instanceof UpdateMsg)
+        {
+          synchronized (this)
+          {
+            rcvWindow--;
+          }
+        }
         if (msg instanceof WindowMsg)
         {
           WindowMsg windowMsg = (WindowMsg) msg;
@@ -1410,11 +1418,12 @@
   {
     try
     {
-      rcvWindow--;
-      if ((rcvWindow < halfRcvWindow) && (session != null))
+      updateDoneCount ++;
+      if ((updateDoneCount >= halfRcvWindow) && (session != null))
       {
-        session.publish(new WindowMsg(halfRcvWindow));
-        rcvWindow += halfRcvWindow;
+        session.publish(new WindowMsg(updateDoneCount));
+        rcvWindow += updateDoneCount;
+        updateDoneCount = 0;
       }
     } catch (IOException e)
     {

--
Gitblit v1.10.0