From cf44474b926f6da103b7a4376fb446d7722ca939 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 05 Dec 2013 15:14:40 +0000
Subject: [PATCH] OPENDJ-1174 Transfer responsibility for populating the ChangeNumberIndexDB to ChangelogDB
---
opends/src/server/org/opends/server/replication/server/changelog/je/ChangeNumberIndexer.java | 18 +++++++++++++++++-
opends/src/server/org/opends/server/replication/server/changelog/je/JEReplicaDB.java | 5 ++++-
opends/src/server/org/opends/server/api/DirectoryThread.java | 1 -
3 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/opends/src/server/org/opends/server/api/DirectoryThread.java b/opends/src/server/org/opends/server/api/DirectoryThread.java
index ff3227d..3b7bd5e 100644
--- a/opends/src/server/org/opends/server/api/DirectoryThread.java
+++ b/opends/src/server/org/opends/server/api/DirectoryThread.java
@@ -416,7 +416,6 @@
public void initiateShutdown()
{
setThreadStateIfNotShuttingDown(ThreadState.SHUTTING_DOWN);
- interrupt();
}
/**
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/ChangeNumberIndexer.java b/opends/src/server/org/opends/server/replication/server/changelog/je/ChangeNumberIndexer.java
index 76d47bf..24ca271 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/ChangeNumberIndexer.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/ChangeNumberIndexer.java
@@ -347,6 +347,17 @@
/** {@inheritDoc} */
@Override
+ public void initiateShutdown()
+ {
+ super.initiateShutdown();
+ synchronized (this)
+ {
+ notify();
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override
public void run()
{
try
@@ -380,6 +391,10 @@
{
synchronized (this)
{
+ if (isShutdownInitiated())
+ {
+ continue;
+ }
wait();
}
// advance cursor, success/failure will be checked later
@@ -400,7 +415,8 @@
synchronized (this)
{
// double check to protect against a missed call to notify()
- if (!canMoveForwardMediumConsistencyPoint(baseDN))
+ if (!isShutdownInitiated()
+ && !canMoveForwardMediumConsistencyPoint(baseDN))
{
wait();
// loop to check if changes older than the medium consistency
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/JEReplicaDB.java b/opends/src/server/org/opends/server/replication/server/changelog/je/JEReplicaDB.java
index 67d2404..f1ce819 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/JEReplicaDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/JEReplicaDB.java
@@ -363,7 +363,10 @@
}
catch (InterruptedException e)
{
- Thread.currentThread().interrupt();
+ // Do not reset the interrupt flag here,
+ // because otherwise JE will barf next time flush() is called:
+ // JE 5.0.97 refuses to persist changes to the DB when invoked
+ // from a Thread with the interrupt flag set to true.
}
}
}
--
Gitblit v1.10.0