From caa4de0dcfdb41b26fbff20936ac0ef49bab95cc Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 05 Jun 2015 07:22:40 +0000
Subject: [PATCH] OPENDJ-2086 ConcurrentModificationException in file based changelog

---
 opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/Log.java |   28 ++++++++++++++++++----------
 1 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/Log.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/Log.java
index 53819c2..5dfac9f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/Log.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/Log.java
@@ -434,8 +434,8 @@
       }
       LogFile<K, V> headLogFile = getHeadLogFile();
       if (mustRotate(headLogFile))
-      {
-        logger.info(INFO_CHANGELOG_LOG_FILE_ROTATION.get(logPath.getPath(), headLogFile.getSizeInBytes()));
+      { 
+        logger.debug(INFO_CHANGELOG_LOG_FILE_ROTATION.get(logPath.getPath(), headLogFile.getSizeInBytes()));
 
         rotateHeadLogFile();
         headLogFile = getHeadLogFile();
@@ -853,18 +853,26 @@
   <V2 extends Comparable<V2>> K findBoundaryKeyFromRecord(Record.Mapper<V, V2> mapper, V2 limitValue)
       throws ChangelogException
   {
-    K key = null;
-    for (LogFile<K, V> logFile : logFiles.values())
+    sharedLock.lock();
+    try
     {
-      final Record<K, V> record = logFile.getOldestRecord();
-      final V2 oldestValue = mapper.map(record.getValue());
-      if (oldestValue.compareTo(limitValue) > 0)
+      K key = null;
+      for (LogFile<K, V> logFile : logFiles.values())
       {
-        return key;
+        final Record<K, V> record = logFile.getOldestRecord();
+        final V2 oldestValue = mapper.map(record.getValue());
+        if (oldestValue.compareTo(limitValue) > 0)
+        {
+          return key;
+        }
+        key = record.getKey();
       }
-      key = record.getKey();
+      return key;
     }
-    return key;
+    finally
+    {
+      sharedLock.unlock();
+    }
   }
 
   /** Effectively close this log. */

--
Gitblit v1.10.0