From b875ab3f7b327f797ec4532015e45da6ae3fff56 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

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

diff --git a/opends/src/server/org/opends/server/replication/server/ServerReader.java b/opends/src/server/org/opends/server/replication/server/ServerReader.java
index ed74a43..6e85261 100644
--- a/opends/src/server/org/opends/server/replication/server/ServerReader.java
+++ b/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