From 4255726566abd4387c586d09376ffd4efeb5f164 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Tue, 08 Apr 2014 09:09:25 +0000
Subject: [PATCH] Backport fix for OPENDJ-1354: replication threads BLOCKED in pendingChanges queue

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

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerReader.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerReader.java
index ed74a43..6e85261 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerReader.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ServerReader.java
@@ -180,8 +180,23 @@
           } else if (msg instanceof WindowMsg)
           {
             handler.updateWindow((WindowMsg) msg);
-          } else if (msg instanceof RoutableMsg)
+          }
+          else if (msg instanceof MonitorRequestMsg)
           {
+            handler.processMonitorRequestMsg((MonitorRequestMsg) msg);
+          }
+          else if (msg instanceof MonitorMsg)
+          {
+            handler.processMonitorMsg((MonitorMsg) msg);
+          }
+          else if (msg instanceof RoutableMsg)
+          {
+            /*
+             * Note that we handle monitor messages separately since they in
+             * fact never need "routing" and are instead sent directly between
+             * connected peers. Doing so allows us to more clearly decouple
+             * write IO from the reader thread (see OPENDJ-1354).
+             */
             handler.process((RoutableMsg) msg);
           } else if (msg instanceof ResetGenerationIdMsg)
           {

--
Gitblit v1.10.0