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