From 7690cb21d051728c5b72a99a2c1cc50f8e907f8e Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Sat, 14 Mar 2015 00:48:34 +0000
Subject: [PATCH] OPENDJ-1848: simplify DatabaseContainer and Storage APIs

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/JECompressedSchema.java   |   14 ---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java        |    3 
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/State.java                |    6 -
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Index.java                |   10 -
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/Storage.java          |    8 --
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java       |    4 -
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/TracedStorage.java        |   17 ----
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java             |   17 +--
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Entry.java             |    6 -
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/WriteableStorage.java |    8 --
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java       |   57 +++-----------
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2URI.java               |    8 -
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DatabaseContainer.java    |   34 --------
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2ID.java                |    7 -
 opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java     |   20 -----
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/NullIndex.java            |   11 --
 16 files changed, 35 insertions(+), 195 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 3789dc0..a7fb337 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
@@ -418,19 +418,6 @@
     }
 
     @Override
-    public void truncateTree(final TreeName treeName)
-    {
-      try
-      {
-        getExchangeFromCache(treeName).removeAll();
-      }
-      catch (final PersistitException e)
-      {
-        throw new StorageRuntimeException(e);
-      }
-    }
-
-    @Override
     public boolean update(final TreeName treeName, final ByteSequence key, final UpdateFunction f)
     {
       try
@@ -565,13 +552,6 @@
     DirectoryServer.deregisterAlertGenerator(this);
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public void closeTree(final TreeName treeName)
-  {
-    // nothing to do, in persistit you close the volume itself
-  }
-
   private BufferPoolConfiguration getBufferPoolCfg()
   {
     return dbCfg.getBufferPoolMap().get(BUFFER_SIZE);
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java
index bc656b0..0f60dc7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/AttributeIndex.java
@@ -45,7 +45,6 @@
 import org.forgerock.opendj.ldap.schema.MatchingRule;
 import org.forgerock.opendj.ldap.spi.IndexQueryFactory;
 import org.forgerock.opendj.ldap.spi.IndexingOptions;
-import org.forgerock.util.Utils;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.meta.BackendIndexCfgDefn.IndexType;
 import org.opends.server.admin.std.server.BackendIndexCfg;
@@ -273,13 +272,10 @@
     indexConfig.addChangeListener(this);
   }
 
-  /** Closes the attribute index. */
   @Override
   public void close()
   {
-    Utils.closeSilently(nameToIndexes.values());
     indexConfig.removeChangeListener(this);
-    // The entryContainer is responsible for closing the JE databases.
   }
 
   /**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2ID.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2ID.java
index bf82939..a008590 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2ID.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2ID.java
@@ -30,7 +30,6 @@
 
 import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.backends.pluggable.spi.ReadableStorage;
-import org.opends.server.backends.pluggable.spi.Storage;
 import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
 import org.opends.server.backends.pluggable.spi.TreeName;
 import org.opends.server.backends.pluggable.spi.WriteableStorage;
@@ -49,14 +48,12 @@
    * Create a DN2ID instance for the DN database in a given entryContainer.
    *
    * @param treeName The name of the DN database.
-   * @param env The JE environment.
    * @param entryContainer The entryContainer of the DN database.
    * @throws StorageRuntimeException If an error occurs in the JE database.
    */
-  DN2ID(TreeName treeName, Storage env, EntryContainer entryContainer)
-      throws StorageRuntimeException
+  DN2ID(TreeName treeName, EntryContainer entryContainer) throws StorageRuntimeException
   {
-    super(treeName, env);
+    super(treeName);
     prefixRDNComponents = entryContainer.getBaseDN().size();
   }
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2URI.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2URI.java
index 20e33c4..2ddb29f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2URI.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2URI.java
@@ -46,7 +46,6 @@
 import org.forgerock.util.Pair;
 import org.opends.server.backends.pluggable.spi.Cursor;
 import org.opends.server.backends.pluggable.spi.ReadableStorage;
-import org.opends.server.backends.pluggable.spi.Storage;
 import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
 import org.opends.server.backends.pluggable.spi.TreeName;
 import org.opends.server.backends.pluggable.spi.WriteableStorage;
@@ -102,17 +101,14 @@
    *
    * @param treeName
    *          The name of the referral database.
-   * @param storage
-   *          The JE environment.
    * @param entryContainer
    *          The entryContainer of the DN database.
    * @throws StorageRuntimeException
    *           If an error occurs in the JE database.
    */
-  DN2URI(TreeName treeName, Storage storage, EntryContainer entryContainer)
-      throws StorageRuntimeException
+  DN2URI(TreeName treeName, EntryContainer entryContainer) throws StorageRuntimeException
   {
-    super(treeName, storage);
+    super(treeName);
     prefixRDNComponents = entryContainer.getBaseDN().size();
   }
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DatabaseContainer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DatabaseContainer.java
index 029ae64..dacfb17 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DatabaseContainer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DatabaseContainer.java
@@ -26,11 +26,8 @@
  */
 package org.opends.server.backends.pluggable;
 
-import java.io.Closeable;
-
 import org.opends.server.backends.pluggable.spi.Cursor;
 import org.opends.server.backends.pluggable.spi.ReadableStorage;
-import org.opends.server.backends.pluggable.spi.Storage;
 import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
 import org.opends.server.backends.pluggable.spi.TreeName;
 import org.opends.server.backends.pluggable.spi.WriteableStorage;
@@ -39,23 +36,18 @@
  * This class is a wrapper around the JE database object and provides basic
  * read and write methods for entries.
  */
-abstract class DatabaseContainer implements Closeable
+abstract class DatabaseContainer
 {
   /** The name of the database within the entryContainer. */
   private TreeName name;
 
-  /** The reference to the JE Storage. */
-  final Storage storage;
-
   /**
    * Create a new DatabaseContainer object.
    *
    * @param treeName The name of the entry database.
-   * @param storage The JE Storage.
    */
-  DatabaseContainer(TreeName treeName, Storage storage)
+  DatabaseContainer(TreeName treeName)
   {
-    this.storage = storage;
     this.name = treeName;
   }
 
@@ -75,28 +67,6 @@
   }
 
   /**
-   * Flush any cached database information to disk and close the
-   * database container.
-   *
-   * The database container should not be closed while other processes
-   * acquired the container. The container should not be closed
-   * while cursors handles into the database remain open, or
-   * transactions that include operations on the database have not yet
-   * been committed or aborted.
-   *
-   * The container may not be accessed again after this method is
-   * called, regardless of the method's success or failure.
-   *
-   * @throws StorageRuntimeException if an error occurs.
-   */
-  @Override
-  public synchronized void close() throws StorageRuntimeException
-  {
-    // FIXME: is this method needed?
-    storage.closeTree(name);
-  }
-
-  /**
    * Get the count of key/data pairs in the database in a JE database.
    * This is a simple wrapper around the JE Database.count method.
    * @param txn The JE transaction handle, or null if none.
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
index eb0599a..698c897 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
@@ -27,6 +27,7 @@
  */
 package org.opends.server.backends.pluggable;
 
+import static org.forgerock.util.Utils.closeSilently;
 import static org.opends.messages.JebMessages.*;
 import static org.opends.server.backends.pluggable.JebFormat.*;
 import static org.opends.server.core.DirectoryServer.*;
@@ -54,7 +55,6 @@
 import org.forgerock.opendj.ldap.ByteStringBuilder;
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchScope;
-import org.forgerock.util.Utils;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
@@ -482,13 +482,13 @@
             config.isCompactEncoding(),
             rootContainer.getCompressedSchema());
 
-      id2entry = new ID2Entry(getIndexName(ID2ENTRY_DATABASE_NAME), storage, entryDataConfig);
+      id2entry = new ID2Entry(getIndexName(ID2ENTRY_DATABASE_NAME), entryDataConfig);
       id2entry.open(txn);
 
-      dn2id = new DN2ID(getIndexName(DN2ID_DATABASE_NAME), storage, this);
+      dn2id = new DN2ID(getIndexName(DN2ID_DATABASE_NAME), this);
       dn2id.open(txn);
 
-      state = new State(getIndexName(STATE_DATABASE_NAME), storage);
+      state = new State(getIndexName(STATE_DATABASE_NAME));
       state.open(txn);
 
       if (config.isSubordinateIndexesEnabled())
@@ -501,11 +501,10 @@
         // subordinate indexes will fail.
         id2children = openNewNullIndex(txn, ID2CHILDREN_DATABASE_NAME, new ID2CIndexer());
         id2subtree = openNewNullIndex(txn, ID2SUBTREE_DATABASE_NAME, new ID2SIndexer());
-
         logger.info(NOTE_JEB_SUBORDINATE_INDEXES_DISABLED, backend.getBackendID());
       }
 
-      dn2uri = new DN2URI(getIndexName(REFERRAL_DATABASE_NAME), storage, this);
+      dn2uri = new DN2URI(getIndexName(REFERRAL_DATABASE_NAME), this);
       dn2uri.open(txn);
 
       for (String idx : config.listBackendIndexes())
@@ -546,8 +545,10 @@
 
   private NullIndex openNewNullIndex(WriteableStorage txn, String indexId, Indexer indexer)
   {
-    final NullIndex index = new NullIndex(getIndexName(indexId), indexer, state, storage, txn, this);
+    final TreeName indexName = getIndexName(indexId);
+    final NullIndex index = new NullIndex(indexName, indexer, state, txn, this);
     state.putIndexTrustState(txn, index, false);
+    txn.deleteTree(indexName);
     index.open(txn); // No-op
     return index;
   }
@@ -560,20 +561,8 @@
   @Override
   public void close() throws StorageRuntimeException
   {
-    // Close core indexes.
-    dn2id.close();
-    id2entry.close();
-    dn2uri.close();
-    id2children.close();
-    id2subtree.close();
-    state.close();
-
-    Utils.closeSilently(attrIndexMap.values());
-
-    for (VLVIndex vlvIndex : vlvIndexMap.values())
-    {
-      vlvIndex.close();
-    }
+    closeSilently(attrIndexMap.values());
+    closeSilently(vlvIndexMap.values());
 
     // Deregister any listeners.
     config.removePluggableChangeListener(this);
@@ -2831,8 +2820,6 @@
       // The state database can not be removed individually.
       return;
     }
-
-    database.close();
     txn.deleteTree(database.getName());
     if(database instanceof Index)
     {
@@ -2880,13 +2867,6 @@
   {
     final List<DatabaseContainer> databases = new ArrayList<DatabaseContainer>();
     listDatabases(databases);
-
-    // close the containers.
-    for(DatabaseContainer db : databases)
-    {
-      db.close();
-    }
-
     try
     {
       // Rename in transaction.
@@ -3008,12 +2988,8 @@
             {
               // Disabling subordinate indexes. Use a null index and ensure that
               // future attempts to use the real indexes will fail.
-              id2children.close();
               id2children = openNewNullIndex(txn, ID2CHILDREN_DATABASE_NAME, new ID2CIndexer());
-
-              id2subtree.close();
               id2subtree = openNewNullIndex(txn, ID2SUBTREE_DATABASE_NAME, new ID2SIndexer());
-
               logger.info(NOTE_JEB_SUBORDINATE_INDEXES_DISABLED, cfg.getBackendId());
             }
           }
@@ -3083,16 +3059,11 @@
   {
     final List<DatabaseContainer> databases = new ArrayList<DatabaseContainer>();
     listDatabases(databases);
-
-    for(DatabaseContainer db : databases)
-    {
-      db.close();
-    }
     try
     {
       for (DatabaseContainer db : databases)
       {
-        txn.truncateTree(db.getName());
+        txn.deleteTree(db.getName());
       }
     }
     finally
@@ -3122,7 +3093,6 @@
   void clearDatabase(WriteableStorage txn, DatabaseContainer database)
       throws StorageRuntimeException
   {
-    database.close();
     try
     {
       txn.deleteTree(database.getName());
@@ -3169,8 +3139,7 @@
 
   private Index newIndex(WriteableStorage txn, String name, Indexer indexer)
   {
-    final Index index = new Index(getIndexName(name),
-        storage, indexer, state, config.getIndexEntryLimit(), 0, true, txn, this);
+    final Index index = new Index(getIndexName(name), indexer, state, config.getIndexEntryLimit(), 0, true, txn, this);
     index.open(txn);
     if (!index.isTrusted())
     {
@@ -3191,7 +3160,7 @@
   Index newIndexForAttribute(WriteableStorage txn, TreeName indexName, Indexer indexer, int indexEntryLimit)
   {
     final int cursorEntryLimit = 100000;
-    return new Index(indexName, storage, indexer, state, indexEntryLimit, cursorEntryLimit, false, txn, this);
+    return new Index(indexName, indexer, state, indexEntryLimit, cursorEntryLimit, false, txn, this);
   }
 
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Entry.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Entry.java
index 875e543..9cd2d9e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Entry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Entry.java
@@ -45,7 +45,6 @@
 import org.forgerock.opendj.ldap.DecodeException;
 import org.opends.server.api.CompressedSchema;
 import org.opends.server.backends.pluggable.spi.ReadableStorage;
-import org.opends.server.backends.pluggable.spi.Storage;
 import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
 import org.opends.server.backends.pluggable.spi.TreeName;
 import org.opends.server.backends.pluggable.spi.WriteableStorage;
@@ -225,16 +224,15 @@
    * Create a new ID2Entry object.
    *
    * @param name The name of the entry database.
-   * @param storage The JE Storage.
    * @param dataConfig The desired compression and encryption options for data
    * stored in the entry database.
    * @param entryContainer The entryContainer of the entry database.
    * @throws StorageRuntimeException If an error occurs in the JE database.
    *
    */
-  ID2Entry(TreeName name, Storage storage, DataConfig dataConfig) throws StorageRuntimeException
+  ID2Entry(TreeName name, DataConfig dataConfig) throws StorageRuntimeException
   {
-    super(name, storage);
+    super(name);
     this.dataConfig = dataConfig;
   }
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Index.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Index.java
index 8406d26..8b5b7d8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Index.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Index.java
@@ -43,7 +43,6 @@
 import org.opends.server.backends.pluggable.IndexBuffer.BufferedIndexValues;
 import org.opends.server.backends.pluggable.spi.Cursor;
 import org.opends.server.backends.pluggable.spi.ReadableStorage;
-import org.opends.server.backends.pluggable.spi.Storage;
 import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
 import org.opends.server.backends.pluggable.spi.TreeName;
 import org.opends.server.backends.pluggable.spi.WriteableStorage;
@@ -111,7 +110,6 @@
   /**
    * Create a new index object.
    * @param name The name of the index database within the entryContainer.
-   * @param storage The JE Storage
    * @param indexer The indexer object to construct index keys from LDAP
    * attribute values.
    * @param state The state database to persist index state info.
@@ -124,12 +122,10 @@
    * @param entryContainer The database entryContainer holding this index.
    * @throws StorageRuntimeException If an error occurs in the JE database.
    */
-  Index(TreeName name, Storage storage, Indexer indexer,
-        State state, int indexEntryLimit, int cursorEntryLimit,
-        boolean maintainCount, WriteableStorage txn, EntryContainer entryContainer)
-      throws StorageRuntimeException
+  Index(TreeName name, Indexer indexer, State state, int indexEntryLimit, int cursorEntryLimit, boolean maintainCount,
+      WriteableStorage txn, EntryContainer entryContainer) throws StorageRuntimeException
   {
-    super(name, storage);
+    super(name);
     this.indexer = indexer;
     this.indexEntryLimit = indexEntryLimit;
     this.cursorEntryLimit = cursorEntryLimit;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/JECompressedSchema.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/JECompressedSchema.java
index c2b5602..06f3b20 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/JECompressedSchema.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/JECompressedSchema.java
@@ -100,20 +100,6 @@
     load(txn);
   }
 
-
-
-  /**
-   * Closes the databases and releases any resources held by this compressed
-   * schema manager.
-   */
-  public void close()
-  {
-    storage.closeTree(adTreeName);
-    storage.closeTree(ocTreeName);
-
-    storage = null;
-  }
-
   /** {@inheritDoc} */
   @Override
   protected void storeAttribute(final byte[] encodedAttribute,
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/NullIndex.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/NullIndex.java
index 49b2f6d..2c9d460 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/NullIndex.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/NullIndex.java
@@ -31,7 +31,6 @@
 import org.forgerock.opendj.ldap.ConditionResult;
 import org.forgerock.opendj.ldap.spi.IndexingOptions;
 import org.opends.server.backends.pluggable.spi.ReadableStorage;
-import org.opends.server.backends.pluggable.spi.Storage;
 import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
 import org.opends.server.backends.pluggable.spi.TreeName;
 import org.opends.server.backends.pluggable.spi.WriteableStorage;
@@ -45,10 +44,10 @@
 final class NullIndex extends Index
 {
 
-  NullIndex(TreeName name, Indexer indexer, State state, Storage storage, WriteableStorage txn,
+  NullIndex(TreeName name, Indexer indexer, State state, WriteableStorage txn,
       EntryContainer entryContainer) throws StorageRuntimeException
   {
-    super(name, storage, indexer, state, 0, 0, false, txn, entryContainer);
+    super(name, indexer, state, 0, 0, false, txn, entryContainer);
   }
 
   @Override
@@ -160,12 +159,6 @@
   }
 
   @Override
-  public void close() throws StorageRuntimeException
-  {
-    // Do nothing.
-  }
-
-  @Override
   long getRecordCount(ReadableStorage txn) throws StorageRuntimeException
   {
     return 0;
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 f13de4c..41a28f1 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
@@ -549,10 +549,7 @@
         ec.exclusiveLock.unlock();
       }
     }
-
-    compressedSchema.close();
     config.removePluggableChangeListener(this);
-
     if (storage != null)
     {
       storage.close();
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/State.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/State.java
index 3c5af85..2f61bd7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/State.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/State.java
@@ -28,7 +28,6 @@
 
 import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.backends.pluggable.spi.ReadableStorage;
-import org.opends.server.backends.pluggable.spi.Storage;
 import org.opends.server.backends.pluggable.spi.StorageRuntimeException;
 import org.opends.server.backends.pluggable.spi.TreeName;
 import org.opends.server.backends.pluggable.spi.WriteableStorage;
@@ -47,11 +46,10 @@
    * Create a new State object.
    *
    * @param name The name of the entry database.
-   * @param env The JE Storage.
    */
-  State(TreeName name, Storage env)
+  State(TreeName name)
   {
-    super(name, env);
+    super(name);
   }
 
   /**
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 64679f0..2a5d22d 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
@@ -202,13 +202,6 @@
     }
 
     @Override
-    public void truncateTree(final TreeName name)
-    {
-      txn.truncateTree(name);
-      logger.trace("Storage.WriteableStorage.truncateTree(%s, %s)", backendId, name);
-    }
-
-    @Override
     public boolean update(final TreeName name, final ByteSequence key, final UpdateFunction f)
     {
       final boolean isUpdated = txn.update(name, key, f);
@@ -239,16 +232,6 @@
   }
 
   @Override
-  public void closeTree(final TreeName name)
-  {
-    storage.closeTree(name);
-    if (logger.isTraceEnabled())
-    {
-      logger.trace("Storage.closeTree(%s, %s)", backendId, name);
-    }
-  }
-
-  @Override
   public File getDirectory()
   {
     return storage.getDirectory();
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java
index 55b75fa..002a33e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VLVIndex.java
@@ -29,6 +29,7 @@
 import static org.opends.messages.JebMessages.*;
 import static org.opends.server.util.StaticUtils.*;
 
+import java.io.Closeable;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -85,7 +86,7 @@
  * to its own key.
  */
 class VLVIndex extends DatabaseContainer
-    implements ConfigurationChangeListener<BackendVLVIndexCfg>
+    implements ConfigurationChangeListener<BackendVLVIndexCfg>, Closeable
 {
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
@@ -113,6 +114,8 @@
   private SearchFilter filter;
   private SearchScope scope;
 
+  /** The storage associated with this index. */
+  private final Storage storage;
 
   /**
    * Create a new VLV vlvIndex object.
@@ -131,12 +134,13 @@
   VLVIndex(BackendVLVIndexCfg config, State state, Storage storage, EntryContainer entryContainer, WriteableStorage txn)
       throws StorageRuntimeException, ConfigException
   {
-    super(new TreeName(entryContainer.getDatabasePrefix(), "vlv." + config.getName()), storage);
+    super(new TreeName(entryContainer.getDatabasePrefix(), "vlv." + config.getName()));
 
     this.config = config;
     this.baseDN = config.getBaseDN();
     this.scope = valueOf(config.getScope());
     this.sortedSetCapacity = config.getMaxBlockSize();
+    this.storage = storage;
 
     try
     {
@@ -245,16 +249,9 @@
     return bytes.toInt();
   }
 
-  /**
-   * Close the VLV index.
-   *
-   * @throws StorageRuntimeException if a JE database error occurs while
-   * closing the index.
-   */
   @Override
-  public void close() throws StorageRuntimeException
+  public void close()
   {
-    super.close();
     this.config.removeChangeListener(this);
   }
 
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 0603289..780e90f 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
@@ -79,14 +79,6 @@
    */
   void write(WriteOperation writeOperation) throws Exception;
 
-  /**
-   * Closes the tree identified by the provided name.
-   *
-   * @param treeName
-   *          the tree name
-   */
-  void closeTree(TreeName treeName);
-
   /** {@inheritDoc} */
   @Override
   void close();
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/WriteableStorage.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/WriteableStorage.java
index a501872..fefc656 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/WriteableStorage.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/spi/WriteableStorage.java
@@ -41,14 +41,6 @@
   void openTree(TreeName name);
 
   /**
-   * Truncates the tree identified by the provided name. It removes all the records in the tree.
-   *
-   * @param name
-   *          the tree name
-   */
-  void truncateTree(TreeName name);
-
-  /**
    * Renames the tree from the old to the new name.
    *
    * @param oldName

--
Gitblit v1.10.0