From 705e6161ec492a9c3e537188125f9b7a2d8761d2 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 19 Dec 2014 14:08:29 +0000
Subject: [PATCH] OPENDJ-1672 CR-5726 Fix NoSuchElementException in RS when adding big entries

---
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/server/MessageHandler.java |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/server/MessageHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/server/MessageHandler.java
index 4c5b00a..f1ea2ce 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/server/MessageHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/server/MessageHandler.java
@@ -69,6 +69,9 @@
 {
   /** The logger of this class. */
   protected static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
+
+  private static final int MINIMUM_TRESHOLD_MSG_QUEUE_SIZE = 5;
+
   /**
    * UpdateMsg queue.
    */
@@ -174,8 +177,10 @@
 
   private boolean isMsgQueueAboveThreshold()
   {
-    return msgQueue.count() > maxQueueSize
-        || msgQueue.bytesCount() > maxQueueBytesSize;
+    final long count = msgQueue.count();
+    // ensure there is a minimum number of messages in queue to avoid wrong behavior
+    return count > maxQueueSize
+        || (count >= MINIMUM_TRESHOLD_MSG_QUEUE_SIZE && msgQueue.bytesCount() > maxQueueBytesSize);
   }
 
   private boolean isMsgQueueBelowThreshold()

--
Gitblit v1.10.0