mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Nicolas Capponi
05.22.2015 a42191048533b606600f1a0866a2712f9b3dd7bc
OPENDJ-2086 ConcurrentModificationException in file based changelog

Use lock in Log.findBoundaryKeyFromRecord() to prevent concurrent
modification
1 files modified
10 ■■■■■ changed files
opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/Log.java 10 ●●●●● patch | view | raw | blame | history
opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/Log.java
@@ -435,7 +435,7 @@
      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,6 +853,9 @@
  <V2 extends Comparable<V2>> K findBoundaryKeyFromRecord(Record.Mapper<V, V2> mapper, V2 limitValue)
      throws ChangelogException
  {
    sharedLock.lock();
    try
    {
    K key = null;
    for (LogFile<K, V> logFile : logFiles.values())
    {
@@ -866,6 +869,11 @@
    }
    return key;
  }
    finally
    {
      sharedLock.unlock();
    }
  }
  /** Effectively close this log. */
  private void doClose()