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/test/java/org/opends/server/backends/pluggable/ID2CountTest.java | 3
opendj-server-legacy/src/messages/org/opends/messages/backend.properties | 2
opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/StateTest.java | 5
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java | 9 +
opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/DN2IDTest.java | 3
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/Storage.java | 15 +++
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeBufferImporter.java | 5
opendj-server-legacy/src/main/java/org/opends/server/extensions/FIFOEntryCache.java | 5
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/TracedStorage.java | 7 +
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java | 48 +++++++++--
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/StorageRuntimeException.java | 2
opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java | 18 +++-
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/StorageInUseException.java | 70 +++++++++++++++++
opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java | 6 +
opendj-server-legacy/src/main/java/org/opends/server/types/CacheEntry.java | 6
15 files changed, 171 insertions(+), 33 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();
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
index 08cff51..c1567c0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
@@ -33,7 +33,12 @@
import static org.opends.server.util.StaticUtils.*;
import java.io.IOException;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.SortedSet;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicInteger;
@@ -51,11 +56,33 @@
import org.opends.server.backends.RebuildConfig;
import org.opends.server.backends.VerifyConfig;
import org.opends.server.backends.pluggable.spi.Storage;
+import org.opends.server.backends.pluggable.spi.Storage.AccessMode;
+import org.opends.server.backends.pluggable.spi.StorageInUseException;
import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
import org.opends.server.backends.pluggable.spi.WriteOperation;
import org.opends.server.backends.pluggable.spi.WriteableTransaction;
-import org.opends.server.core.*;
-import org.opends.server.types.*;
+import org.opends.server.core.AddOperation;
+import org.opends.server.core.DeleteOperation;
+import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.ModifyDNOperation;
+import org.opends.server.core.ModifyOperation;
+import org.opends.server.core.SearchOperation;
+import org.opends.server.core.ServerContext;
+import org.opends.server.types.AttributeType;
+import org.opends.server.types.BackupConfig;
+import org.opends.server.types.BackupDirectory;
+import org.opends.server.types.CanceledOperationException;
+import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Entry;
+import org.opends.server.types.IndexType;
+import org.opends.server.types.InitializationException;
+import org.opends.server.types.LDIFExportConfig;
+import org.opends.server.types.LDIFImportConfig;
+import org.opends.server.types.LDIFImportResult;
+import org.opends.server.types.OpenDsException;
+import org.opends.server.types.Operation;
+import org.opends.server.types.RestoreConfig;
import org.opends.server.util.LDIFException;
import org.opends.server.util.RuntimeInformation;
@@ -159,7 +186,7 @@
{
if (mustOpenRootContainer())
{
- rootContainer = initializeRootContainer();
+ rootContainer = newRootContainer(AccessMode.READ_WRITE);
}
// Preload the tree cache.
@@ -653,7 +680,7 @@
}
}
- rootContainer = initializeRootContainer();
+ rootContainer = newRootContainer(AccessMode.READ_WRITE);
return getImportStrategy().importLDIF(importConfig, rootContainer, serverContext);
}
catch (StorageRuntimeException e)
@@ -765,7 +792,7 @@
{
if (openRootContainer)
{
- rootContainer = initializeRootContainer();
+ rootContainer = newRootContainer(AccessMode.READ_WRITE);
}
new OnDiskMergeBufferImporter(rootContainer, rebuildConfig, cfg, serverContext).rebuildIndexes();
}
@@ -953,7 +980,7 @@
private final RootContainer getReadOnlyRootContainer()
throws ConfigException, InitializationException
{
- return initializeRootContainer();
+ return newRootContainer(AccessMode.READ_ONLY);
}
/**
@@ -977,14 +1004,17 @@
}
}
- private RootContainer initializeRootContainer()
+ private RootContainer newRootContainer(AccessMode accessMode)
throws ConfigException, InitializationException {
// Open the storage
try {
final RootContainer rc = new RootContainer(getBackendID(), storage, cfg);
- rc.open();
+ rc.open(accessMode);
return rc;
}
+ catch (StorageInUseException e) {
+ throw new InitializationException(ERR_VERIFY_BACKEND_ONLINE.get(), e);
+ }
catch (StorageRuntimeException e)
{
throw new InitializationException(ERR_OPEN_ENV_FAIL.get(e.getMessage()), e);
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeBufferImporter.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeBufferImporter.java
index d8f0966..4343469 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeBufferImporter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeBufferImporter.java
@@ -107,6 +107,7 @@
import org.opends.server.backends.pluggable.spi.ReadOperation;
import org.opends.server.backends.pluggable.spi.ReadableTransaction;
import org.opends.server.backends.pluggable.spi.Storage;
+import org.opends.server.backends.pluggable.spi.Storage.AccessMode;
import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
import org.opends.server.backends.pluggable.spi.TreeName;
import org.opends.server.backends.pluggable.spi.UpdateFunction;
@@ -1120,7 +1121,7 @@
}
finally
{
- storage.open();
+ storage.open(AccessMode.READ_WRITE);
}
shutdownAll(dbService);
@@ -3419,7 +3420,7 @@
returnValues.put("dn", DN.valueOf("ds-cfg-backend-id=importDNCache,cn=Backends,cn=config"));
storage = new PersistItStorage(newPersistitBackendCfgProxy(returnValues),
DirectoryServer.getInstance().getServerContext());
- storage.open();
+ storage.open(AccessMode.READ_WRITE);
storage.write(new WriteOperation()
{
@Override
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java
index 9e00d76..57774bb 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java
@@ -49,6 +49,7 @@
import org.opends.server.backends.pluggable.spi.ReadOperation;
import org.opends.server.backends.pluggable.spi.ReadableTransaction;
import org.opends.server.backends.pluggable.spi.Storage;
+import org.opends.server.backends.pluggable.spi.Storage.AccessMode;
import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
import org.opends.server.backends.pluggable.spi.StorageStatus;
import org.opends.server.backends.pluggable.spi.WriteOperation;
@@ -127,11 +128,11 @@
* @throws ConfigException
* If an configuration error occurs while opening the storage.
*/
- void open() throws StorageRuntimeException, ConfigException
+ void open(AccessMode accessMode) throws StorageRuntimeException, ConfigException
{
try
{
- storage.open();
+ storage.open(accessMode);
storage.write(new WriteOperation()
{
@Override
@@ -142,6 +143,10 @@
}
});
}
+ catch(StorageRuntimeException e)
+ {
+ throw e;
+ }
catch (Exception e)
{
throw new StorageRuntimeException(e);
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/TracedStorage.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/TracedStorage.java
index a820646..5c097ea 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/TracedStorage.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/TracedStorage.java
@@ -271,12 +271,13 @@
}
@Override
- public void open() throws Exception
+ public void open(AccessMode accessMode) throws Exception
{
- storage.open();
+ storage.open(accessMode);
if (logger.isTraceEnabled())
{
- logger.trace("Storage@%s.open() - Opened storage for backend %s", storageId(), backendId);
+ logger
+ .trace("Storage@%s.open(accessMode=%s) - Opened storage for backend %s", storageId(), accessMode, backendId);
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/Storage.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/Storage.java
index b485282..ca97c08 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/Storage.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/Storage.java
@@ -39,6 +39,15 @@
*/
public interface Storage extends Closeable
{
+
+ /** Defines access modes of a Storage. */
+ public enum AccessMode {
+ /** Constant used to open the Storage in read-only mode. */
+ READ_ONLY,
+ /** Constant used to open the Storage in read-write mode. */
+ READ_WRITE;
+ }
+
/**
* Starts the import operation.
*
@@ -54,11 +63,15 @@
/**
* Opens the storage engine to allow executing operations on it.
*
+ * @param accessMode
+ * Specify the access mode to this storage.
+ * @throws NullPointerException
+ * if accessMode is null.
* @throws Exception
* if a problem occurs with the underlying storage engine
* @see #close() to release all resources once import is finished
*/
- void open() throws Exception;
+ void open(AccessMode accessMode) throws Exception;
/**
* Executes a read operation. In case of a read operation rollback, implementations must ensure
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/StorageInUseException.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/StorageInUseException.java
new file mode 100644
index 0000000..6b6fe84
--- /dev/null
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/StorageInUseException.java
@@ -0,0 +1,70 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
+ * or http://forgerock.org/license/CDDLv1.0.html.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at legal-notices/CDDLv1_0.txt.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information:
+ * Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ * Copyright 2015 ForgeRock AS
+ */
+package org.opends.server.backends.pluggable.spi;
+
+/**
+ * Runtime exception for storage supporting single access only.
+ */
+@SuppressWarnings("serial")
+public final class StorageInUseException extends StorageRuntimeException
+{
+
+ /**
+ * Constructor with a message and a cause.
+ *
+ * @param message
+ * the exception message
+ * @param cause
+ * the cause of the exception
+ */
+ public StorageInUseException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
+ /**
+ * Constructor with a message.
+ *
+ * @param message
+ * the exception message
+ */
+ public StorageInUseException(String message)
+ {
+ super(message);
+ }
+
+ /**
+ * Constructor with a cause.
+ *
+ * @param cause
+ * the cause of the exception
+ */
+ public StorageInUseException(Throwable cause)
+ {
+ super(cause);
+ }
+
+}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/StorageRuntimeException.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/StorageRuntimeException.java
index c907b50..18956c0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/StorageRuntimeException.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/StorageRuntimeException.java
@@ -29,7 +29,7 @@
* Runtime exception for problems happening in the storage engine.
*/
@SuppressWarnings("serial")
-public final class StorageRuntimeException extends RuntimeException
+public class StorageRuntimeException extends RuntimeException
{
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/FIFOEntryCache.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/FIFOEntryCache.java
index 35ad245..4f08c9c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/FIFOEntryCache.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/FIFOEntryCache.java
@@ -967,8 +967,9 @@
// See if there is anything on idMap that is not reflected on
// dnMap in case maps went out of sync.
- for (String backendID : idMapCopy.keySet()) {
- for (Map.Entry<Long, CacheEntry> entry : idMapCopy.get(backendID).entrySet()) {
+ for (Map.Entry<String, Map<Long, CacheEntry>> backendCache : idMapCopy.entrySet()) {
+ final String backendID = backendCache.getKey();
+ for (Map.Entry<Long, CacheEntry> entry : backendCache.getValue().entrySet()) {
final CacheEntry cacheEntry = entry.getValue();
if (cacheEntry == null || !dnMapCopy.containsKey(cacheEntry.getDN())) {
sb.append(cacheEntry != null ? cacheEntry.getDN() : null);
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java
index e508774..c006607 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java
@@ -460,6 +460,12 @@
}
}
}
+ catch (InitializationException e)
+ {
+ err.println(wrapText(ERR_VERIFYINDEX_ERROR_DURING_VERIFY.get(e.getMessage()),
+ MAX_LINE_WIDTH));
+ returnCode = 1;
+ }
catch (Exception e)
{
err.println(wrapText(ERR_VERIFYINDEX_ERROR_DURING_VERIFY.get(stackTraceToSingleLineString(e)),
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/CacheEntry.java b/opendj-server-legacy/src/main/java/org/opends/server/types/CacheEntry.java
index f846d47..c074d68 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/CacheEntry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/CacheEntry.java
@@ -38,7 +38,7 @@
notes="This should only be used within a backend")
public final class CacheEntry
{
- /** The backend with which this cache entry is associated. */
+ /** ID of the backend with which this cache entry is associated. */
private final String backendID;
/** The entry itself. */
@@ -72,9 +72,9 @@
}
/**
- * Retrieves the backend for this cache entry.
+ * Retrieves the backend ID for this cache entry.
*
- * @return The backend for this cache entry.
+ * @return ID of the backend for this cache entry.
*/
public String getBackendID()
{
diff --git a/opendj-server-legacy/src/messages/org/opends/messages/backend.properties b/opendj-server-legacy/src/messages/org/opends/messages/backend.properties
index 54be0b0..54b1ecc 100644
--- a/opendj-server-legacy/src/messages/org/opends/messages/backend.properties
+++ b/opendj-server-legacy/src/messages/org/opends/messages/backend.properties
@@ -1334,3 +1334,5 @@
ERR_PARENT_ENTRY_IS_MISSING_577=Parent entry is missing
WARN_BACKUPDB_INCREMENTAL_NOT_FOUND_DOING_NORMAL_578=Could not find any \
backup in '%s'. A full backup will be executed
+ERR_VERIFY_BACKEND_ONLINE_579=The backend must be disabled before \
+ verification process can start
\ No newline at end of file
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/DN2IDTest.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/DN2IDTest.java
index d594d94..73b26a4 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/DN2IDTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/DN2IDTest.java
@@ -44,6 +44,7 @@
import org.opends.server.backends.pluggable.spi.ReadOperation;
import org.opends.server.backends.pluggable.spi.ReadableTransaction;
import org.opends.server.backends.pluggable.spi.SequentialCursor;
+import org.opends.server.backends.pluggable.spi.Storage.AccessMode;
import org.opends.server.backends.pluggable.spi.TreeName;
import org.opends.server.backends.pluggable.spi.WriteOperation;
import org.opends.server.backends.pluggable.spi.WriteableTransaction;
@@ -91,7 +92,7 @@
importer.createTree(dn2IDTreeName);
}
- storage.open();
+ storage.open(AccessMode.READ_WRITE);
baseDN = dn("dc=example, dc=com");
dn2ID = new DN2ID(dn2IDTreeName, baseDN);
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/ID2CountTest.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/ID2CountTest.java
index 7165394..7abc0a5 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/ID2CountTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/ID2CountTest.java
@@ -45,6 +45,7 @@
import org.opends.server.backends.persistit.PersistItStorage;
import org.opends.server.backends.pluggable.spi.ReadOperation;
import org.opends.server.backends.pluggable.spi.ReadableTransaction;
+import org.opends.server.backends.pluggable.spi.Storage.AccessMode;
import org.opends.server.backends.pluggable.spi.TreeName;
import org.opends.server.backends.pluggable.spi.WriteOperation;
import org.opends.server.backends.pluggable.spi.WriteableTransaction;
@@ -90,7 +91,7 @@
importer.createTree(id2CountTreeName);
}
- storage.open();
+ storage.open(AccessMode.READ_WRITE);
id2Count = new ID2Count(id2CountTreeName);
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/StateTest.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/StateTest.java
index 935ee4e..26001bd 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/StateTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/StateTest.java
@@ -41,6 +41,7 @@
import org.opends.server.backends.pluggable.State.IndexFlag;
import org.opends.server.backends.pluggable.spi.ReadOperation;
import org.opends.server.backends.pluggable.spi.ReadableTransaction;
+import org.opends.server.backends.pluggable.spi.Storage.AccessMode;
import org.opends.server.backends.pluggable.spi.TreeName;
import org.opends.server.backends.pluggable.spi.WriteOperation;
import org.opends.server.backends.pluggable.spi.WriteableTransaction;
@@ -89,8 +90,8 @@
try(final org.opends.server.backends.pluggable.spi.Importer importer = storage.startImport()) {
importer.createTree(stateTreeName);
}
-
- storage.open();
+
+ storage.open(AccessMode.READ_WRITE);
state = new State(stateTreeName);
}
--
Gitblit v1.10.0