From fa6a436d8ae0dd3686f586953a7cacc38a8674c7 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Wed, 11 May 2016 08:40:02 +0000
Subject: [PATCH] OPENDJ-2978 OPENDJ-2991 Initialize newest record only for write-enabled LogFile

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

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/LogFile.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/LogFile.java
index 09b95ad..31cbb71 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/LogFile.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/LogFile.java
@@ -103,23 +103,24 @@
     Reject.ifNull(logFilePath, parser);
     this.logfile = logFilePath;
     this.isWriteEnabled = isWriteEnabled;
-
+    final ReadWriteLock rwLock = new ReentrantReadWriteLock();
+    exclusiveLock = rwLock.writeLock();
+    sharedLock = rwLock.readLock();
     createLogFileIfNotExists();
+
+    readerPool = new LogReaderPool<>(logfile, parser);
     if (isWriteEnabled)
     {
       ensureLogFileIsValid(parser);
       writer = BlockLogWriter.newWriter(new LogWriter(logfile), parser);
+      initializeNewestRecord();
     }
     else
     {
+      // Newest record is never requested for read-only log files.
+      // It will never be because it is available in the file name.
       writer = null;
     }
-    readerPool = new LogReaderPool<>(logfile, parser);
-
-    final ReadWriteLock rwLock = new ReentrantReadWriteLock();
-    exclusiveLock = rwLock.writeLock();
-    sharedLock = rwLock.readLock();
-    initializeNewestRecord();
   }
 
   /**
@@ -408,7 +409,8 @@
     }
     catch (IOException ioe)
     {
-      throw new ChangelogException(ERR_CHANGELOG_CANNOT_READ_NEWEST_RECORD.get(logfile.getAbsolutePath()), ioe);
+      throw new ChangelogException(ERR_CHANGELOG_CANNOT_READ_NEWEST_RECORD.get(logfile.getAbsolutePath() + "- " +
+          StaticUtils.stackTraceToSingleLineString(ioe) + "-" + Thread.currentThread()), ioe);
     }
   }
 

--
Gitblit v1.10.0