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