From 89c803ce85e8a88d54544bfe35f24c9be34758a3 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Thu, 18 Sep 2008 06:40:07 +0000
Subject: [PATCH] Fix for issue 3477 : OpenDS runs out of synchronization or crashes

---
 opendj-sdk/opends/src/server/org/opends/server/replication/server/MsgQueue.java |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/MsgQueue.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/MsgQueue.java
index d8b7295..3484633 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/MsgQueue.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/MsgQueue.java
@@ -42,6 +42,9 @@
   private SortedMap<ChangeNumber, UpdateMessage>  map =
     new TreeMap<ChangeNumber, UpdateMessage>();
 
+  // The total number of bytes for all the message in the queue.
+  private int bytesCount = 0;
+
   /**
    * Return the first UpdateMessage in the MsgQueue.
    *
@@ -67,12 +70,22 @@
    *
    * @return The number of elements in this MsgQueue.
    */
-  public int size()
+  public int count()
   {
     return map.size();
   }
 
   /**
+   * Returns the number of bytes in this MsgQueue.
+   *
+   * @return The number of bytes in this MsgQueue.
+   */
+  public int bytesCount()
+  {
+    return bytesCount;
+  }
+
+  /**
    * Returns <tt>true</tt> if this MsgQueue contains no UpdateMessage.
    *
    * @return <tt>true</tt> if this MsgQueue contains no UpdateMessage.
@@ -91,6 +104,7 @@
   public void add(UpdateMessage update)
   {
     map.put(update.getChangeNumber(), update);
+    bytesCount += update.size();
   }
 
   /**
@@ -102,6 +116,7 @@
   {
     UpdateMessage msg = map.get(map.firstKey());
     map.remove(msg.getChangeNumber());
+    bytesCount -= msg.size();
     return msg;
   }
 
@@ -126,5 +141,6 @@
   public void clear()
   {
     map.clear();
+    bytesCount = 0;
   }
 }

--
Gitblit v1.10.0