From 77131174b396433451592ca82362a3534ce74c80 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 16 Dec 2014 14:49:33 +0000
Subject: [PATCH] OPENDJ-1602 (CR-5566) New pluggable storage based backend
---
opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java | 26 ++++++++++++++++----------
1 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java
index 0fe1368..efc4b12 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java
@@ -40,6 +40,8 @@
import org.opends.server.api.Backend;
import org.opends.server.backends.pluggable.BackendImpl.Storage;
import org.opends.server.backends.pluggable.BackendImpl.StorageRuntimeException;
+import org.opends.server.backends.pluggable.BackendImpl.WriteOperation;
+import org.opends.server.backends.pluggable.BackendImpl.WriteableStorage;
import org.opends.server.core.DirectoryServer;
import org.opends.server.monitors.DatabaseEnvironmentMonitor;
import org.opends.server.types.ConfigChangeResult;
@@ -47,10 +49,6 @@
import org.opends.server.types.FilePermission;
import org.opends.server.types.InitializationException;
-
-
-
-
import static org.opends.messages.ConfigMessages.*;
import static org.opends.messages.JebMessages.*;
import static org.opends.server.util.StaticUtils.*;
@@ -209,7 +207,15 @@
}
compressedSchema = new JECompressedSchema(storage);
- openAndRegisterEntryContainers(config.getBaseDN());
+
+ storage.write(new WriteOperation()
+ {
+ @Override
+ public void run(WriteableStorage txn) throws Exception
+ {
+ openAndRegisterEntryContainers(txn, config.getBaseDN());
+ }
+ });
}
/**
@@ -229,7 +235,7 @@
* @throws ConfigException If an configuration error occurs while opening
* the entry container.
*/
- public EntryContainer openEntryContainer(DN baseDN, String name)
+ public EntryContainer openEntryContainer(DN baseDN, String name, WriteableStorage txn)
throws StorageRuntimeException, ConfigException
{
String databasePrefix;
@@ -244,7 +250,7 @@
EntryContainer ec = new EntryContainer(baseDN, databasePrefix,
backend, config, storage, this);
- ec.open();
+ ec.open(txn);
return ec;
}
@@ -283,15 +289,15 @@
* @throws ConfigException If a configuration error occurs while
* opening the entry container.
*/
- private void openAndRegisterEntryContainers(Set<DN> baseDNs)
+ private void openAndRegisterEntryContainers(WriteableStorage txn, Set<DN> baseDNs)
throws StorageRuntimeException, InitializationException, ConfigException
{
EntryID id;
EntryID highestID = null;
for(DN baseDN : baseDNs)
{
- EntryContainer ec = openEntryContainer(baseDN, null);
- id = ec.getHighestEntryID();
+ EntryContainer ec = openEntryContainer(baseDN, null, txn);
+ id = ec.getHighestEntryID(txn);
registerEntryContainer(baseDN, ec);
if(highestID == null || id.compareTo(highestID) > 0)
{
--
Gitblit v1.10.0