From f7fe6c1339f1a7da5723036cbae27ab74e13a9a2 Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <yannick.lecaillez@forgerock.com>
Date: Thu, 21 May 2015 12:42:58 +0000
Subject: [PATCH] OPENDJ-1763: verify-index fails with InitializationException when the server is started
---
opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java | 18 ++++++++++++------
1 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
index ef5b39e..ee81598 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
@@ -27,7 +27,6 @@
import static com.persistit.Transaction.CommitPolicy.*;
import static java.util.Arrays.*;
-
import static org.opends.messages.BackendMessages.*;
import static org.opends.messages.ConfigMessages.*;
import static org.opends.messages.UtilityMessages.*;
@@ -55,6 +54,7 @@
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.util.Reject;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.PersistitBackendCfg;
import org.opends.server.api.Backupable;
@@ -63,6 +63,7 @@
import org.opends.server.backends.pluggable.spi.Importer;
import org.opends.server.backends.pluggable.spi.ReadOperation;
import org.opends.server.backends.pluggable.spi.Storage;
+import org.opends.server.backends.pluggable.spi.StorageInUseException;
import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
import org.opends.server.backends.pluggable.spi.StorageStatus;
import org.opends.server.backends.pluggable.spi.TreeName;
@@ -90,6 +91,7 @@
import com.persistit.Value;
import com.persistit.Volume;
import com.persistit.VolumeSpecification;
+import com.persistit.exception.InUseException;
import com.persistit.exception.PersistitException;
import com.persistit.exception.RollbackException;
@@ -580,13 +582,13 @@
cfg.addPersistitChangeListener(this);
}
- private Configuration buildConfiguration()
+ private Configuration buildConfiguration(AccessMode accessMode)
{
final Configuration dbCfg = new Configuration();
dbCfg.setLogFile(new File(backendDirectory, VOLUME_NAME + ".log").getPath());
dbCfg.setJournalPath(new File(backendDirectory, JOURNAL_NAME).getPath());
dbCfg.setVolumeList(asList(new VolumeSpecification(new File(backendDirectory, VOLUME_NAME).getPath(), null,
- BUFFER_SIZE, 4096, Long.MAX_VALUE / BUFFER_SIZE, 2048, true, false, false)));
+ BUFFER_SIZE, 4096, Long.MAX_VALUE / BUFFER_SIZE, 2048, true, false, accessMode.equals(AccessMode.READ_ONLY))));
final BufferPoolConfiguration bufferPoolCfg = getBufferPoolCfg(dbCfg);
bufferPoolCfg.setMaximumCount(Integer.MAX_VALUE);
@@ -642,9 +644,10 @@
/** {@inheritDoc} */
@Override
- public void open() throws ConfigException, StorageRuntimeException
+ public void open(AccessMode accessMode) throws ConfigException, StorageRuntimeException
{
- open0(buildConfiguration());
+ Reject.ifNull(accessMode, "accessMode must not be null");
+ open0(buildConfiguration(accessMode));
}
private void open0(final Configuration dbCfg) throws ConfigException
@@ -666,6 +669,9 @@
db.initialize();
volume = db.loadVolume(VOLUME_NAME);
}
+ catch(final InUseException e) {
+ throw new StorageInUseException(e);
+ }
catch (final PersistitException e)
{
throw new StorageRuntimeException(e);
@@ -728,7 +734,7 @@
@Override
public Importer startImport() throws ConfigException, StorageRuntimeException
{
- open0(buildConfiguration());
+ open0(buildConfiguration(AccessMode.READ_WRITE));
return new ImporterImpl();
}
--
Gitblit v1.10.0