From 5bf287bc9f92c5b0893e1dade87453be153d07c1 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 17 Dec 2013 16:30:13 +0000
Subject: [PATCH] OPENDJ-1172 Deadlock between replication threads during shutdown

---
 opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java |   28 ++++++++++------------------
 1 files changed, 10 insertions(+), 18 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
index f0bc953..166accf 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
@@ -32,7 +32,6 @@
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
 
-import org.opends.messages.MessageBuilder;
 import org.opends.server.admin.std.server.MonitorProviderCfg;
 import org.opends.server.api.DirectoryThread;
 import org.opends.server.api.MonitorProvider;
@@ -283,15 +282,15 @@
             Thread.currentThread().interrupt();
           }
         }
-      } catch (Exception end)
+      }
+      catch (Exception end)
       {
-        MessageBuilder mb = new MessageBuilder();
-        mb.append(ERR_EXCEPTION_CHANGELOG_TRIM_FLUSH.get());
-        mb.append(" ");
-        mb.append(stackTraceToSingleLineString(end));
-        logError(mb.toMessage());
+        logError(ERR_EXCEPTION_CHANGELOG_TRIM_FLUSH
+            .get(stackTraceToSingleLineString(end)));
         if (replicationServer != null)
+        {
           replicationServer.shutdown();
+        }
         break;
       }
       try {
@@ -309,13 +308,12 @@
         }
       } catch (Exception end)
       {
-        MessageBuilder mb = new MessageBuilder();
-        mb.append(ERR_EXCEPTION_CHANGELOG_TRIM_FLUSH.get());
-        mb.append(" ");
-        mb.append(stackTraceToSingleLineString(end));
-        logError(mb.toMessage());
+        logError(ERR_EXCEPTION_CHANGELOG_TRIM_FLUSH
+            .get(stackTraceToSingleLineString(end)));
         if (replicationServer != null)
+        {
           replicationServer.shutdown();
+        }
         break;
       }
     }
@@ -454,18 +452,12 @@
       }
       catch (ChangelogException e)
       {
-        // mark shutdown for this db so that we don't try again to
-        // stop it from cursor.close() or methods called by cursor.close()
         cursor.abort();
-        shutdown.set(true);
         throw e;
       }
       catch (Exception e)
       {
-        // mark shutdown for this db so that we don't try again to
-        // stop it from cursor.close() or methods called by cursor.close()
         cursor.abort();
-        shutdown.set(true);
         throw new ChangelogException(e);
       }
     }

--
Gitblit v1.10.0