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