From 28f013678002f13af8e84803e68ab2ec9d9ba6ec Mon Sep 17 00:00:00 2001
From: dugan <dugan@localhost>
Date: Sat, 26 Sep 2009 18:34:25 +0000
Subject: [PATCH] Remove un-needed files.

---
 /dev/null |  679 --------------------------------------------------------
 1 files changed, 0 insertions(+), 679 deletions(-)

diff --git a/opends/src/server/org/opends/server/backends/jeb/IndexRebuildThread.java b/opends/src/server/org/opends/server/backends/jeb/IndexRebuildThread.java
deleted file mode 100644
index 85fc389..0000000
--- a/opends/src/server/org/opends/server/backends/jeb/IndexRebuildThread.java
+++ /dev/null
@@ -1,1104 +0,0 @@
-/*
- * 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
- * trunk/opends/resource/legal-notices/OpenDS.LICENSE
- * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
- * 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
- * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  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 2006-2008 Sun Microsystems, Inc.
- */
-package org.opends.server.backends.jeb;
-import org.opends.messages.Message;
-
-import org.opends.server.api.DirectoryThread;
-
-import com.sleepycat.je.*;
-
-import org.opends.server.types.*;
-
-import static org.opends.messages.JebMessages.
-    ERR_JEB_MISSING_DN2ID_RECORD;
-import static org.opends.messages.JebMessages.
-    ERR_JEB_REBUILD_INDEX_FAILED;
-import static org.opends.messages.JebMessages.
-    ERR_JEB_REBUILD_INSERT_ENTRY_FAILED;
-import static org.opends.server.loggers.ErrorLogger.logError;
-import static org.opends.server.loggers.debug.DebugLogger.*;
-import org.opends.server.loggers.debug.DebugTracer;
-import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
-
-
-/**
- * A thread to do the actual work of rebuilding an index.
- */
-public class IndexRebuildThread extends DirectoryThread
-{
-  /**
-   * The tracer object for the debug logger.
-   */
-  private static final DebugTracer TRACER = getTracer();
-
-  /**
-   * The entry container.
-   */
-  EntryContainer ec = null;
-
-  /**
-   * The internal database/indexType to rebuild.
-   */
-  IndexType indexType = null;
-
-  /**
-   * The attribute indexType to rebuild.
-   */
-  AttributeIndex attrIndex = null;
-
-  /**
-   * The VLV index to rebuild.
-   */
-  VLVIndex vlvIndex = null;
-
-  /**
-   * The indexType to rebuild.
-   */
-  Index index = null;
-
-  /**
-   * The ID2ENTRY database.
-   */
-  ID2Entry id2entry = null;
-
-  /**
-   * The number of total entries to rebuild. An negative value indicates this
-   * value is not yet known.
-   */
-  long totalEntries = -1;
-
-  /**
-   * The number of entries processed.
-   */
-  long processedEntries = 0;
-
-  /**
-   * The number of entries rebuilt successfully.
-   */
-  long rebuiltEntries = 0;
-
-  /**
-   * The number of entries rebuilt with possible duplicates.
-   */
-  long duplicatedEntries = 0;
-
-  /**
-   * The number of entries that were skipped because they were not applicable
-   * for the indexType or because an error occurred.
-   */
-  long skippedEntries = 0;
-
-  /**
-   * The types of internal indexes that are rebuildable.
-   */
-  enum IndexType
-  {
-    DN2ID, DN2URI, ID2CHILDREN, ID2SUBTREE, INDEX, ATTRIBUTEINDEX, VLVINDEX
-  }
-
-  /**
-   * Construct a new index rebuild thread to rebuild a system index.
-   *
-   * @param ec The entry container to rebuild in.
-   * @param index The index type to rebuild.
-   */
-  IndexRebuildThread(EntryContainer ec, IndexType index)
-  {
-    super("Index Rebuild Thread " + ec.getDatabasePrefix() + "_" +
-        index.toString());
-    this.ec = ec;
-    this.indexType = index;
-    this.id2entry = ec.getID2Entry();
-  }
-
-  /**
-   * Construct a new index rebuild thread to rebuild an index.
-   *
-   * @param ec The entry container to rebuild in.
-   * @param index The index to rebuild.
-   */
-  IndexRebuildThread(EntryContainer ec, Index index)
-  {
-    super("Index Rebuild Thread " + index.getName());
-    this.ec = ec;
-    this.indexType = IndexType.INDEX;
-    this.index = index;
-    this.id2entry = ec.getID2Entry();
-  }
-
-  /**
-   * Construct a new index rebuild thread to rebuild an attribute index.
-   *
-   * @param ec The entry container to rebuild in.
-   * @param index The attribute index to rebuild.
-   */
-  IndexRebuildThread(EntryContainer ec, AttributeIndex index)
-  {
-    super("Index Rebuild Thread " + index.getName());
-    this.ec = ec;
-    this.indexType = IndexType.ATTRIBUTEINDEX;
-    this.attrIndex = index;
-    this.id2entry = ec.getID2Entry();
-  }
-
-  /**
-   * Construct a new index rebuild thread to rebuild an VLV index.
-   *
-   * @param ec The entry container to rebuild in.
-   * @param vlvIndex The VLV index to rebuild.
-   */
-  IndexRebuildThread(EntryContainer ec, VLVIndex vlvIndex)
-  {
-    super("Index Rebuild Thread " + vlvIndex.getName());
-    this.ec = ec;
-    this.indexType = IndexType.VLVINDEX;
-    this.vlvIndex = vlvIndex;
-    this.id2entry = ec.getID2Entry();
-  }
-
-  /**
-   * Clear the database and prep it for the rebuild.
-   *
-   * @throws DatabaseException if a JE databse error occurs while clearing
-   * the database being rebuilt.
-   */
-  public void clearDatabase() throws DatabaseException
-  {
-    if(indexType == null)
-    {
-      //TODO: throw error
-      if(debugEnabled())
-      {
-        TRACER.debugError("No index type specified. Rebuild process " +
-            "terminated.");
-      }
-
-      return;
-    }
-    if(indexType == IndexType.ATTRIBUTEINDEX && attrIndex == null)
-    {
-      //TODO: throw error
-      if(debugEnabled())
-      {
-        TRACER.debugError("No attribute index specified. Rebuild process " +
-            "terminated.");
-      }
-
-      return;
-    }
-
-    if(indexType == IndexType.INDEX && index == null)
-    {
-      //TODO: throw error
-      if(debugEnabled())
-      {
-        TRACER.debugError("No index specified. Rebuild process terminated.");
-      }
-
-      return;
-    }
-
-    if(indexType == IndexType.VLVINDEX && vlvIndex == null)
-    {
-      //TODO: throw error
-      if(debugEnabled())
-      {
-        TRACER.debugError("No VLV index specified. Rebuild process " +
-            "terminated.");
-      }
-
-      return;
-    }
-
-    switch(indexType)
-    {
-      case DN2ID :
-        ec.clearDatabase(ec.getDN2ID());
-        break;
-      case DN2URI :
-        ec.clearDatabase(ec.getDN2URI());
-        break;
-      case ID2CHILDREN :
-        ec.clearDatabase(ec.getID2Children());
-        ec.getID2Children().setRebuildStatus(true);
-        break;
-      case ID2SUBTREE :
-        ec.clearDatabase(ec.getID2Subtree());
-        ec.getID2Subtree().setRebuildStatus(true);
-        break;
-      case ATTRIBUTEINDEX :
-        ec.clearAttributeIndex(attrIndex);
-        attrIndex.setRebuildStatus(true);
-        break;
-      case VLVINDEX :
-        ec.clearDatabase(vlvIndex);
-        vlvIndex.setRebuildStatus(true);
-        break;
-      case INDEX :
-        ec.clearDatabase(index);
-        index.setRebuildStatus(true);
-    }
-  }
-
-  /**
-   * Start the rebuild process.
-   */
-  public void run()
-  {
-    if(indexType == null)
-    {
-      //TODO: throw error
-      if(debugEnabled())
-      {
-        TRACER.debugError("No index type specified. Rebuild process " +
-            "terminated.");
-      }
-
-      return;
-    }
-    if(indexType == IndexType.ATTRIBUTEINDEX && attrIndex == null)
-    {
-      //TODO: throw error
-      if(debugEnabled())
-      {
-        TRACER.debugError("No attribute index specified. Rebuild process " +
-            "terminated.");
-      }
-
-      return;
-    }
-
-    if(indexType == IndexType.INDEX && index == null)
-    {
-      //TODO: throw error
-      if(debugEnabled())
-      {
-        TRACER.debugError("No index specified. Rebuild process terminated.");
-      }
-
-      return;
-    }
-
-    if(indexType == IndexType.VLVINDEX && vlvIndex == null)
-    {
-      //TODO: throw error
-      if(debugEnabled())
-      {
-        TRACER.debugError("No VLV index specified. Rebuild process " +
-            "terminated.");
-      }
-
-      return;
-    }
-
-    try
-    {
-      totalEntries = getTotalEntries();
-
-      switch(indexType)
-      {
-        case DN2ID : rebuildDN2ID();
-          break;
-        case DN2URI : rebuildDN2URI();
-          break;
-        case ID2CHILDREN : rebuildID2Children();
-          break;
-        case ID2SUBTREE : rebuildID2Subtree();
-          break;
-        case ATTRIBUTEINDEX : rebuildAttributeIndex(attrIndex);
-          break;
-        case VLVINDEX : rebuildVLVIndex(vlvIndex);
-          break;
-        case INDEX : rebuildAttributeIndex(index);
-      }
-
-      if(debugEnabled())
-      {
-        TRACER.debugVerbose("Rebuilt %d entries", rebuiltEntries);
-      }
-    }
-    catch(Exception e)
-    {
-      Message message = ERR_JEB_REBUILD_INDEX_FAILED.get(
-          this.getName(), stackTraceToSingleLineString(e));
-      logError(message);
-
-      if(debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-    }
-  }
-
-  /**
-   * Rebuild an interal DN2ID database.
-   *
-   * @throws DatabaseException If an error occurs during the rebuild.
-   */
-  private void rebuildDN2ID() throws DatabaseException
-  {
-    DN2ID dn2id = ec.getDN2ID();
-
-    if(debugEnabled())
-    {
-      TRACER.debugInfo("Initiating rebuild of the %s database",
-                       dn2id.getName());
-      TRACER.debugVerbose("%d entries will be rebuilt", totalEntries);
-    }
-
-
-    //Iterate through the id2entry database and insert associated dn2id
-    //records.
-    Cursor cursor = id2entry.openCursor(null, CursorConfig.READ_COMMITTED);
-    try
-    {
-      DatabaseEntry key = new DatabaseEntry();
-      DatabaseEntry data = new DatabaseEntry();
-      LockMode lockMode = LockMode.DEFAULT;
-
-      OperationStatus status;
-      for (status = cursor.getFirst(key, data, lockMode);
-           status == OperationStatus.SUCCESS;
-           status = cursor.getNext(key, data, lockMode))
-      {
-        Transaction txn = ec.beginTransaction();
-        try
-        {
-          EntryID entryID = new EntryID(key);
-          Entry entry = ID2Entry.entryFromDatabase(
-              ByteString.wrap(data.getData()),
-              ec.getRootContainer().getCompressedSchema());
-
-          // Insert into dn2id.
-          if (dn2id.insert(txn, entry.getDN(), entryID))
-          {
-            rebuiltEntries++;
-          }
-          else
-          {
-            // The entry ID already exists in the database.
-            // This could happen if some other process got to this entry
-            // before we did. Since the backend should be offline, this
-            // might be a problem.
-            duplicatedEntries++;
-            if(debugEnabled())
-            {
-              TRACER.debugInfo("Unable to insert entry with DN %s and ID %d " +
-                  "into the DN2ID database because it already exists.",
-                        entry.getDN().toString(), entryID.longValue());
-            }
-          }
-          EntryContainer.transactionCommit(txn);
-          processedEntries++;
-        }
-        catch (Exception e)
-        {
-          EntryContainer.transactionAbort(txn);
-          skippedEntries++;
-
-          Message message = ERR_JEB_REBUILD_INSERT_ENTRY_FAILED.get(
-              dn2id.getName(), stackTraceToSingleLineString(e));
-          logError(message);
-
-          if (debugEnabled())
-          {
-            TRACER.debugCaught(DebugLogLevel.ERROR, e);
-          }
-        }
-      }
-    }
-    finally
-    {
-      cursor.close();
-    }
-  }
-
-  /**
-   * Rebuild the ID2URI internal database.
-   *
-   * @throws DatabaseException if an error occurs during rebuild.
-   */
-  private void rebuildDN2URI() throws DatabaseException
-  {
-    DN2URI dn2uri = ec.getDN2URI();
-
-    if(debugEnabled())
-    {
-      TRACER.debugInfo("Initiating rebuild of the %s database",
-                       dn2uri.getName());
-      TRACER.debugVerbose("%d entries will be rebuilt", totalEntries);
-    }
-
-
-    //Iterate through the id2entry database and insert associated dn2uri
-    //records.
-    Cursor cursor = id2entry.openCursor(null, CursorConfig.READ_COMMITTED);
-    try
-    {
-      DatabaseEntry key = new DatabaseEntry();
-      DatabaseEntry data = new DatabaseEntry();
-      LockMode lockMode = LockMode.DEFAULT;
-
-
-      OperationStatus status;
-      for (status = cursor.getFirst(key, data, lockMode);
-           status == OperationStatus.SUCCESS;
-           status = cursor.getNext(key, data, lockMode))
-      {
-        Transaction txn = ec.beginTransaction();
-        try
-        {
-          EntryID entryID = new EntryID(key);
-          Entry entry = ID2Entry.entryFromDatabase(
-              ByteString.wrap(data.getData()),
-              ec.getRootContainer().getCompressedSchema());
-
-          // Insert into dn2uri.
-          if (dn2uri.addEntry(txn, entry))
-          {
-            rebuiltEntries++;
-          }
-          else
-          {
-            // The entry DN and URIs already exists in the database.
-            // This could happen if some other process got to this entry
-            // before we did. Since the backend should be offline, this
-            // might be a problem.
-            duplicatedEntries++;
-            if(debugEnabled())
-            {
-              TRACER.debugInfo("Unable to insert entry with DN %s and ID %d " +
-                  "into the DN2URI database because it already exists.",
-                        entry.getDN().toString(), entryID.longValue());
-            }
-          }
-          EntryContainer.transactionCommit(txn);
-          processedEntries++;
-        }
-        catch (Exception e)
-        {
-          EntryContainer.transactionAbort(txn);
-          skippedEntries++;
-
-          Message message = ERR_JEB_REBUILD_INSERT_ENTRY_FAILED.get(
-              dn2uri.getName(), stackTraceToSingleLineString(e));
-          logError(message);
-
-          if (debugEnabled())
-          {
-            TRACER.debugCaught(DebugLogLevel.ERROR, e);
-          }
-        }
-      }
-    }
-    finally
-    {
-      cursor.close();
-    }
-  }
-
-  /**
-   * Rebuild the ID2Subtree internal index. This depends on the DN2ID and DN2URI
-   * databases being complete.
-   *
-   * @throws DatabaseException if an error occurs during rebuild.
-   */
-  private void rebuildID2Children() throws DatabaseException
-  {
-    Index id2children = ec.getID2Children();
-
-    if(debugEnabled())
-    {
-      TRACER.debugInfo("Initiating rebuild of the %s index",
-                       id2children.getName());
-      TRACER.debugVerbose("%d entries will be rebuilt", totalEntries);
-    }
-
-
-    DN2ID dn2id = ec.getDN2ID();
-    DN2URI dn2uri = ec.getDN2URI();
-
-    //Iterate through the id2entry database and insert associated dn2children
-    //records.
-    Cursor cursor = id2entry.openCursor(null, CursorConfig.READ_COMMITTED);
-    try
-    {
-      DatabaseEntry key = new DatabaseEntry();
-      DatabaseEntry data = new DatabaseEntry();
-      LockMode lockMode = LockMode.DEFAULT;
-
-      OperationStatus status;
-      for (status = cursor.getFirst(key, data, lockMode);
-           status == OperationStatus.SUCCESS;
-           status = cursor.getNext(key, data, lockMode))
-      {
-        Transaction txn = ec.beginTransaction();
-        try
-        {
-          EntryID entryID = new EntryID(key);
-          Entry entry = ID2Entry.entryFromDatabase(
-              ByteString.wrap(data.getData()),
-              ec.getRootContainer().getCompressedSchema());
-
-          // Check that the parent entry exists.
-          DN parentDN = ec.getParentWithinBase(entry.getDN());
-          if (parentDN != null)
-          {
-            // Check for referral entries above the target.
-            dn2uri.targetEntryReferrals(entry.getDN(), null);
-
-            // Read the parent ID from dn2id.
-            EntryID parentID = dn2id.get(txn, parentDN, LockMode.DEFAULT);
-            if (parentID != null)
-            {
-              // Insert into id2children for parent ID.
-              if(id2children.insertID(txn, parentID.getDatabaseEntry(),
-                                      entryID))
-              {
-                rebuiltEntries++;
-              }
-              else
-              {
-                // The entry already exists in the database.
-                // This could happen if some other process got to this entry
-                // before we did. Since the backend should be offline, this
-                // might be a problem.
-                if(debugEnabled())
-                {
-                  duplicatedEntries++;
-                  TRACER.debugInfo("Unable to insert entry with DN %s and " +
-                      "ID %d into the DN2Subtree database because it already " +
-                      "exists.",
-                            entry.getDN().toString(), entryID.longValue());
-                }
-              }
-            }
-            else
-            {
-              Message msg = ERR_JEB_MISSING_DN2ID_RECORD.get(
-                  parentDN.toNormalizedString());
-              throw new JebException(msg);
-            }
-          }
-          else
-          {
-            skippedEntries++;
-          }
-          EntryContainer.transactionCommit(txn);
-          processedEntries++;
-        }
-        catch (Exception e)
-        {
-          EntryContainer.transactionAbort(txn);
-          skippedEntries++;
-
-          Message message = ERR_JEB_REBUILD_INSERT_ENTRY_FAILED.get(
-              id2children.getName(), stackTraceToSingleLineString(e));
-          logError(message);
-
-          if (debugEnabled())
-          {
-            TRACER.debugCaught(DebugLogLevel.ERROR, e);
-          }
-        }
-      }
-      id2children.setRebuildStatus(false);
-      id2children.setTrusted(null, true);
-    }
-    finally
-    {
-      cursor.close();
-    }
-  }
-
-  /**
-   * Rebuild the ID2Subtree internal index. This depends on the DN2ID and DN2URI
-   * databases being complete.
-   *
-   * @throws DatabaseException if an error occurs during rebuild.
-   */
-  private void rebuildID2Subtree() throws DatabaseException
-  {
-    Index id2subtree = ec.getID2Subtree();
-
-    if(debugEnabled())
-    {
-      TRACER.debugInfo("Initiating rebuild of the %s index",
-                       id2subtree.getName());
-      TRACER.debugVerbose("%d entries will be rebuilt", totalEntries);
-    }
-
-
-    DN2ID dn2id = ec.getDN2ID();
-    DN2URI dn2uri = ec.getDN2URI();
-
-    //Iterate through the id2entry database and insert associated dn2subtree
-    //records.
-    Cursor cursor = id2entry.openCursor(null, CursorConfig.READ_COMMITTED);
-    try
-    {
-      DatabaseEntry key = new DatabaseEntry();
-      DatabaseEntry data = new DatabaseEntry();
-      LockMode lockMode = LockMode.DEFAULT;
-
-      OperationStatus status;
-      for (status = cursor.getFirst(key, data, lockMode);
-           status == OperationStatus.SUCCESS;
-           status = cursor.getNext(key, data, lockMode))
-      {
-        Transaction txn = ec.beginTransaction();
-        try
-        {
-          EntryID entryID = new EntryID(key);
-          Entry entry = ID2Entry.entryFromDatabase(
-              ByteString.wrap(data.getData()),
-              ec.getRootContainer().getCompressedSchema());
-
-          // Check that the parent entry exists.
-          DN parentDN = ec.getParentWithinBase(entry.getDN());
-          if (parentDN != null)
-          {
-            boolean success = true;
-
-            // Check for referral entries above the target.
-            dn2uri.targetEntryReferrals(entry.getDN(), null);
-
-            // Read the parent ID from dn2id.
-            EntryID parentID = dn2id.get(txn, parentDN, LockMode.DEFAULT);
-            if (parentID != null)
-            {
-              // Insert into id2subtree for parent ID.
-              if(!id2subtree.insertID(txn, parentID.getDatabaseEntry(),
-                                      entryID))
-              {
-                success = false;
-              }
-
-              // Iterate up through the superior entries, starting above the
-              // parent.
-              for (DN dn = ec.getParentWithinBase(parentDN); dn != null;
-                   dn = ec.getParentWithinBase(dn))
-              {
-                // Read the ID from dn2id.
-                EntryID nodeID = dn2id.get(null, dn, LockMode.DEFAULT);
-                if (nodeID != null)
-                {
-                  // Insert into id2subtree for this node.
-                  if(!id2subtree.insertID(null, nodeID.getDatabaseEntry(),
-                                          entryID))
-                  {
-                    success = false;
-                  }
-                }
-                else
-                {
-                  Message msg =
-                      ERR_JEB_MISSING_DN2ID_RECORD.get(dn.toNormalizedString());
-                  throw new JebException(msg);
-                }
-              }
-            }
-            else
-            {
-              Message msg = ERR_JEB_MISSING_DN2ID_RECORD.get(
-                  parentDN.toNormalizedString());
-              throw new JebException(msg);
-            }
-
-            if(success)
-            {
-              rebuiltEntries++;
-            }
-            else
-            {
-              // The entry already exists in the database.
-              // This could happen if some other process got to this entry
-              // before we did. Since the backend should be offline, this
-              // might be a problem.
-              if(debugEnabled())
-              {
-                duplicatedEntries++;
-                TRACER.debugInfo("Unable to insert entry with DN %s and ID " +
-                    "%d into the DN2Subtree database because it already " +
-                    "exists.", entry.getDN().toString(), entryID.longValue());
-              }
-            }
-          }
-          else
-          {
-            skippedEntries++;
-          }
-          EntryContainer.transactionCommit(txn);
-          processedEntries++;
-        }
-        catch (Exception e)
-        {
-          EntryContainer.transactionAbort(txn);
-          skippedEntries++;
-
-          Message message = ERR_JEB_REBUILD_INSERT_ENTRY_FAILED.get(
-              id2subtree.getName(), stackTraceToSingleLineString(e));
-          logError(message);
-
-          if (debugEnabled())
-          {
-            TRACER.debugCaught(DebugLogLevel.ERROR, e);
-          }
-        }
-      }
-      id2subtree.setRebuildStatus(false);
-      id2subtree.setTrusted(null, true);
-    }
-    finally
-    {
-      cursor.close();
-    }
-  }
-
-  /**
-   * Rebuild the attribute index.
-   *
-   * @param index The indexType to rebuild.
-   * @throws DatabaseException if an error occurs during rebuild.
-   */
-  private void rebuildAttributeIndex(AttributeIndex index)
-      throws DatabaseException
-  {
-    if(debugEnabled())
-    {
-      TRACER.debugInfo("Initiating rebuild of the %s index",
-                       index.getName());
-      TRACER.debugVerbose("%d entries will be rebuilt", totalEntries);
-    }
-
-    //Iterate through the id2entry database and insert associated indexType
-    //records.
-    Cursor cursor = id2entry.openCursor(null, CursorConfig.READ_COMMITTED);
-    try
-    {
-      DatabaseEntry key = new DatabaseEntry();
-      DatabaseEntry data = new DatabaseEntry();
-      LockMode lockMode = LockMode.DEFAULT;
-
-      OperationStatus status;
-      for (status = cursor.getFirst(key, data, lockMode);
-           status == OperationStatus.SUCCESS;
-           status = cursor.getNext(key, data, lockMode))
-      {
-        Transaction txn = ec.beginTransaction();
-        try
-        {
-          EntryID entryID = new EntryID(key);
-          Entry entry = ID2Entry.entryFromDatabase(
-              ByteString.wrap(data.getData()),
-              ec.getRootContainer().getCompressedSchema());
-
-          // Insert into attribute indexType.
-          if(index.addEntry(txn, entryID, entry))
-          {
-            rebuiltEntries++;
-          }
-          else
-          {
-            // The entry already exists in one or more entry sets.
-            // This could happen if some other process got to this entry
-            // before we did. Since the backend should be offline, this
-            // might be a problem.
-            if(debugEnabled())
-            {
-              duplicatedEntries++;
-              TRACER.debugInfo("Unable to insert entry with DN %s and ID %d " +
-                  "into the DN2Subtree database because it already " +
-                  "exists.",
-                        entry.getDN().toString(), entryID.longValue());
-            }
-          }
-          EntryContainer.transactionCommit(txn);
-          processedEntries++;
-        }
-        catch (Exception e)
-        {
-          EntryContainer.transactionAbort(txn);
-          skippedEntries++;
-
-          Message message = ERR_JEB_REBUILD_INSERT_ENTRY_FAILED.get(
-              index.getName(), stackTraceToSingleLineString(e));
-          logError(message);
-
-          if (debugEnabled())
-          {
-            TRACER.debugCaught(DebugLogLevel.ERROR, e);
-          }
-        }
-      }
-      index.setRebuildStatus(false);
-      index.setTrusted(null, true);
-    }
-    finally
-    {
-      cursor.close();
-    }
-  }
-
-  /**
-   * Rebuild the VLV index.
-   *
-   * @param vlvIndex The VLV index to rebuild.
-   * @throws DatabaseException if an error occurs during rebuild.
-   */
-  private void rebuildVLVIndex(VLVIndex vlvIndex)
-      throws DatabaseException
-  {
-
-    //Iterate through the id2entry database and insert associated indexType
-    //records.
-    Cursor cursor = id2entry.openCursor(null, CursorConfig.READ_COMMITTED);
-    try
-    {
-      DatabaseEntry key = new DatabaseEntry();
-      DatabaseEntry data = new DatabaseEntry();
-      LockMode lockMode = LockMode.DEFAULT;
-
-      OperationStatus status;
-      for (status = cursor.getFirst(key, data, lockMode);
-           status == OperationStatus.SUCCESS;
-           status = cursor.getNext(key, data, lockMode))
-      {
-        Transaction txn = ec.beginTransaction();
-        try
-        {
-          EntryID entryID = new EntryID(key);
-          Entry entry = ID2Entry.entryFromDatabase(
-              ByteString.wrap(data.getData()),
-              ec.getRootContainer().getCompressedSchema());
-
-          // Insert into attribute indexType.
-          if(vlvIndex.addEntry(txn, entryID, entry))
-          {
-            rebuiltEntries++;
-          }
-          else
-          {
-            // The entry already exists in one or more entry sets.
-            // This could happen if some other process got to this entry
-            // before we did. Since the backend should be offline, this
-            // might be a problem.
-            if(debugEnabled())
-            {
-              duplicatedEntries++;
-              TRACER.debugInfo("Unable to insert entry with DN %s and ID %d " +
-                  "into the VLV index %s because it already " +
-                  "exists.",
-                        entry.getDN().toString(), entryID.longValue(),
-                        vlvIndex.getName());
-            }
-          }
-
-          EntryContainer.transactionCommit(txn);
-          processedEntries++;
-        }
-        catch (Exception e)
-        {
-          EntryContainer.transactionAbort(txn);
-          skippedEntries++;
-
-          Message message = ERR_JEB_REBUILD_INSERT_ENTRY_FAILED.get(
-              vlvIndex.getName(), stackTraceToSingleLineString(e));
-          logError(message);
-
-          if (debugEnabled())
-          {
-            TRACER.debugCaught(DebugLogLevel.ERROR, e);
-          }
-        }
-      }
-      vlvIndex.setRebuildStatus(false);
-      vlvIndex.setTrusted(null, true);
-    }
-    finally
-    {
-      cursor.close();
-    }
-  }
-
-  /**
-   * Rebuild the partial attribute index.
-   *
-   * @param index The indexType to rebuild.
-   * @throws DatabaseException if an error occurs during rebuild.
-   */
-  private void rebuildAttributeIndex(Index index)
-      throws DatabaseException
-  {
-    if(debugEnabled())
-    {
-      TRACER.debugInfo("Initiating rebuild of the %s attribute index",
-                       index.getName());
-      TRACER.debugVerbose("%d entries will be rebuilt", totalEntries);
-    }
-
-    //Iterate through the id2entry database and insert associated indexType
-    //records.
-    Cursor cursor = id2entry.openCursor(null, CursorConfig.READ_COMMITTED);
-    try
-    {
-      DatabaseEntry key = new DatabaseEntry();
-      DatabaseEntry data = new DatabaseEntry();
-      LockMode lockMode = LockMode.DEFAULT;
-
-      OperationStatus status;
-      for (status = cursor.getFirst(key, data, lockMode);
-           status == OperationStatus.SUCCESS;
-           status = cursor.getNext(key, data, lockMode))
-      {
-        Transaction txn = ec.beginTransaction();
-        try
-        {
-          EntryID entryID = new EntryID(key);
-          Entry entry = ID2Entry.entryFromDatabase(
-              ByteString.wrap(data.getData()),
-              ec.getRootContainer().getCompressedSchema());
-
-          // Insert into attribute indexType.
-          if(index.addEntry(txn, entryID, entry))
-          {
-            rebuiltEntries++;
-          }
-          else
-          {
-            // The entry already exists in one or more entry sets.
-            // This could happen if some other process got to this entry
-            // before we did. Since the backend should be offline, this
-            // might be a problem.
-            if(debugEnabled())
-            {
-              duplicatedEntries++;
-              TRACER.debugInfo("Unable to insert entry with DN %s and ID %d " +
-                  "into the DN2Subtree database because it already " +
-                  "exists.",
-                        entry.getDN().toString(), entryID.longValue());
-            }
-          }
-          EntryContainer.transactionCommit(txn);
-          processedEntries++;
-        }
-        catch (Exception e)
-        {
-          EntryContainer.transactionAbort(txn);
-          skippedEntries++;
-
-          Message message = ERR_JEB_REBUILD_INSERT_ENTRY_FAILED.get(
-              index.getName(), stackTraceToSingleLineString(e));
-          logError(message);
-
-          if (debugEnabled())
-          {
-            TRACER.debugCaught(DebugLogLevel.ERROR, e);
-          }
-        }
-      }
-      index.setRebuildStatus(false);
-      index.setTrusted(null, true);
-    }
-    finally
-    {
-      cursor.close();
-    }
-  }
-
-  /**
-   * Get the total entries to process in the rebuild.
-   *
-   * @return The total entries to process.
-   * @throws DatabaseException if an error occurs while getting the total
-   *         number of entries to process.
-   */
-  public long getTotalEntries() throws DatabaseException
-  {
-    //If total entries is not calculated yet, do it now.
-    if(totalEntries < 0)
-    {
-      totalEntries = id2entry.getRecordCount();
-    }
-    return totalEntries;
-  }
-
-  /**
-   * Get the number of entries processed in the rebuild.
-   *
-   * @return The total entries processed.
-   */
-  public long getProcessedEntries()
-  {
-    return processedEntries;
-  }
-
-  /**
-   * Get the number of entries successfully rebuilt.
-   *
-   * @return The number of entries successfully rebuilt.
-   */
-  public long getRebuiltEntries()
-  {
-    return rebuiltEntries;
-  }
-
-  /**
-   * Get the number of entries that encountered duplicated indexType values in
-   * the rebuild process.
-   *
-   * @return The number of entries that encountered duplicated indexType values
-   *         in the rebuild process.
-   */
-  public long getDuplicatedEntries()
-  {
-    return duplicatedEntries;
-  }
-
-  /**
-   * Get the number of entries skipped because they were either not applicable
-   * or an error occurred during the process.
-   *
-   * @return The number of entries skipped.
-   */
-  public long getSkippedEntries()
-  {
-    return skippedEntries;
-  }
-
-  /**
-   * Get the index type being rebuilt by this thread.
-   *
-   * @return The index type being rebuilt by this thread.
-   */
-  public IndexType getIndexType()
-  {
-    return indexType;
-  }
-}
-
-
diff --git a/opends/src/server/org/opends/server/backends/jeb/RebuildJob.java b/opends/src/server/org/opends/server/backends/jeb/RebuildJob.java
deleted file mode 100644
index 3d9e55e..0000000
--- a/opends/src/server/org/opends/server/backends/jeb/RebuildJob.java
+++ /dev/null
@@ -1,679 +0,0 @@
-/*
- * 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
- * trunk/opends/resource/legal-notices/OpenDS.LICENSE
- * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
- * 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
- * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  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 2006-2008 Sun Microsystems, Inc.
- */
-package org.opends.server.backends.jeb;
-import org.opends.messages.Message;
-
-import org.opends.server.types.*;
-
-import java.util.ArrayList;
-import java.util.TimerTask;
-import java.util.Timer;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.locks.ReentrantLock;
-
-import com.sleepycat.je.DatabaseException;
-import com.sleepycat.je.StatsConfig;
-import com.sleepycat.je.EnvironmentStats;
-
-import static org.opends.server.loggers.ErrorLogger.logError;
-import static org.opends.server.loggers.debug.DebugLogger.*;
-import org.opends.server.loggers.debug.DebugTracer;
-import org.opends.server.core.DirectoryServer;
-import static org.opends.messages.JebMessages.
-    ERR_JEB_ATTRIBUTE_INDEX_NOT_CONFIGURED;
-import static org.opends.messages.JebMessages.
-    NOTE_JEB_REBUILD_PROGRESS_REPORT;
-import static org.opends.messages.JebMessages.
-    NOTE_JEB_REBUILD_FINAL_STATUS;
-import static org.opends.messages.JebMessages.
-    NOTE_JEB_REBUILD_CACHE_AND_MEMORY_REPORT;
-import static org.opends.messages.JebMessages.
-    ERR_JEB_REBUILD_INDEX_CONFLICT;
-import static org.opends.messages.JebMessages.
-    NOTE_JEB_REBUILD_START;
-import static org.opends.messages.JebMessages.
-    ERR_JEB_VLV_INDEX_NOT_CONFIGURED;
-/**
- * Runs a index rebuild process on the backend. Each index selected for rebuild
- * will be done from scratch by first clearing out the database for that index.
- * Different threads will be used to rebuild each index.
- * The rebuild process can run concurrently with the backend online and
- * performing write and read operations. However, during the rebuild process,
- * other reader and writer activeThreads might notice inconsistencies in index
- * databases being rebuilt. They can safely ignore these inconsistencies as long
- * as a rebuild is in progress.
- */
-public class RebuildJob
-{
-  /**
-   * The tracer object for the debug logger.
-   */
-  private static final DebugTracer TRACER = getTracer();
-
-  /**
-   * The rebuild configuraiton.
-   */
-  private RebuildConfig rebuildConfig;
-
-  /**
-   * The root container used for the verify job.
-   */
-  private RootContainer rootContainer;
-
-  /**
-   * The number of milliseconds between job progress reports.
-   */
-  private long progressInterval = 10000;
-
-  /**
-   * The waiting rebuild threads created to process the rebuild.
-   */
-  private CopyOnWriteArrayList<IndexRebuildThread> waitingThreads =
-      new CopyOnWriteArrayList<IndexRebuildThread>();
-
-  /**
-   * The active rebuild threads created to process the rebuild.
-   */
-  private CopyOnWriteArrayList<IndexRebuildThread> activeThreads =
-      new CopyOnWriteArrayList<IndexRebuildThread>();
-
-  /**
-   * The completed rebuild threads used to process the rebuild.
-   */
-  private CopyOnWriteArrayList<IndexRebuildThread> completedThreads =
-      new CopyOnWriteArrayList<IndexRebuildThread>();
-
-  /**
-   * Rebuild jobs currently running.
-   */
-  private static CopyOnWriteArrayList<RebuildJob> rebuildJobs =
-      new CopyOnWriteArrayList<RebuildJob>();
-
-  /**
-   * A mutex that will be used to provide threadsafe access to methods changing
-   * the set of currently running rebuild jobs.
-   */
-  private static ReentrantLock jobsMutex = new ReentrantLock();
-
-  /**
-   * This class reports progress of the rebuild job at fixed intervals.
-   */
-  class ProgressTask extends TimerTask
-  {
-    /**
-     * The number of records that had been processed at the time of the
-     * previous progress report.
-     */
-    private long previousProcessed = 0;
-
-    /**
-     * The time in milliseconds of the previous progress report.
-     */
-    private long previousTime;
-
-    /**
-     * The environment statistics at the time of the previous report.
-     */
-    private EnvironmentStats prevEnvStats;
-
-    /**
-     * The number of bytes in a megabyte.
-     * Note that 1024*1024 bytes may eventually become known as a mebibyte(MiB).
-     */
-    private static final int bytesPerMegabyte = 1024*1024;
-   /**
-     * Create a new verify progress task.
-     * @throws DatabaseException An error occurred while accessing the JE
-     * database.
-     */
-    public ProgressTask() throws DatabaseException
-    {
-      previousTime = System.currentTimeMillis();
-      prevEnvStats =
-          rootContainer.getEnvironmentStats(new StatsConfig());
-    }
-
-    /**
-     * The action to be performed by this timer task.
-     */
-    public void run()
-    {
-      long latestTime = System.currentTimeMillis();
-      long deltaTime = latestTime - previousTime;
-
-      if (deltaTime == 0)
-      {
-        return;
-      }
-
-      long totalEntries = 0;
-      long latestProcessed = 0;
-
-      ArrayList<IndexRebuildThread> allThreads =
-          new ArrayList<IndexRebuildThread>(waitingThreads);
-      allThreads.addAll(activeThreads);
-      allThreads.addAll(completedThreads);
-
-      for(IndexRebuildThread thread : allThreads)
-      {
-        try
-        {
-          totalEntries += thread.getTotalEntries();
-          latestProcessed += thread.getProcessedEntries();
-
-          if(debugEnabled())
-          {
-            TRACER.debugVerbose("Rebuild thread %s stats: total %d " +
-                "processed %d rebuilt %d duplicated %d skipped %d",
-                         thread.getTotalEntries(), thread.getProcessedEntries(),
-                         thread.getRebuiltEntries(),
-                         thread.getDuplicatedEntries(),
-                         thread.getSkippedEntries());
-          }
-        }
-        catch(Exception e)
-        {
-          if(debugEnabled())
-          {
-            TRACER.debugCaught(DebugLogLevel.ERROR, e);
-          }
-        }
-      }
-
-      long deltaCount = (latestProcessed - previousProcessed);
-      float rate = 1000f*deltaCount / deltaTime;
-      float completed = 0;
-      if(totalEntries > 0)
-      {
-        completed = 100f*latestProcessed / totalEntries;
-      }
-
-      Message message = NOTE_JEB_REBUILD_PROGRESS_REPORT.get(
-          completed, latestProcessed, totalEntries, rate);
-      logError(message);
-
-      try
-      {
-        Runtime runtime = Runtime.getRuntime();
-        long freeMemory = runtime.freeMemory() / bytesPerMegabyte;
-
-        EnvironmentStats envStats =
-            rootContainer.getEnvironmentStats(new StatsConfig());
-        long nCacheMiss =
-             envStats.getNCacheMiss() - prevEnvStats.getNCacheMiss();
-
-        float cacheMissRate = 0;
-        if (deltaCount > 0)
-        {
-          cacheMissRate = nCacheMiss/(float)deltaCount;
-        }
-
-        message = NOTE_JEB_REBUILD_CACHE_AND_MEMORY_REPORT.get(
-            freeMemory, cacheMissRate);
-        logError(message);
-
-        prevEnvStats = envStats;
-      }
-      catch (DatabaseException e)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, e);
-        }
-      }
-
-
-      previousProcessed = latestProcessed;
-      previousTime = latestTime;
-    }
-  }
-
-  /**
-   * Construct a new rebuild job.
-   *
-   * @param rebuildConfig The configuration to use for this rebuild job.
-   */
-  public RebuildJob(RebuildConfig rebuildConfig)
-  {
-    this.rebuildConfig = rebuildConfig;
-  }
-
-  private static void addJob(RebuildJob job)
-      throws DatabaseException, JebException
-  {
-    //Make sure there are no running rebuild jobs
-    jobsMutex.lock();
-
-    try
-    {
-      for(RebuildJob otherJob : rebuildJobs)
-      {
-        String conflictIndex =
-            job.rebuildConfig.checkConflicts(otherJob.rebuildConfig);
-        if(conflictIndex != null)
-        {
-          if(debugEnabled())
-          {
-            TRACER.debugError("Conflit detected. This job config: %s, " +
-                "That job config: %s.",
-                              job.rebuildConfig, otherJob.rebuildConfig);
-          }
-
-          Message msg = ERR_JEB_REBUILD_INDEX_CONFLICT.get(conflictIndex);
-          throw new JebException(msg);
-        }
-      }
-
-      //No conflicts are found. Add the job to the list of currently running
-      // jobs.
-      rebuildJobs.add(job);
-    }
-    finally
-    {
-      jobsMutex.unlock();
-    }
-  }
-
-  private static void removeJob(RebuildJob job)
-  {
-    jobsMutex.lock();
-
-    rebuildJobs.remove(job);
-
-    jobsMutex.unlock();
-  }
-
-  /**
-   * Initiate the rebuild process on a backend.
-   *
-   * @param rootContainer The root container to rebuild in.
-   * @throws DirectoryException If an error occurs during the rebuild process.
-   * @throws DatabaseException If a JE database error occurs during the rebuild
-   *                           process.
-   * @throws JebException If a JE database error occurs during the rebuild
-   *                      process.
-   */
-  public void rebuildBackend(RootContainer rootContainer)
-      throws DirectoryException, DatabaseException, JebException
-  {
-    //TODO: Add check for only performing internal indexType rebuilds when
-    // backend is offline.
-
-    addJob(this);
-
-    try
-    {
-      this.rootContainer = rootContainer;
-      EntryContainer entryContainer =
-          rootContainer.getEntryContainer(rebuildConfig.getBaseDN());
-
-      ArrayList<String> rebuildList = rebuildConfig.getRebuildList();
-
-      if(!rebuildList.isEmpty())
-      {
-
-        for (String index : rebuildList)
-        {
-          IndexRebuildThread rebuildThread;
-          String lowerName = index.toLowerCase();
-          if (lowerName.equals("dn2id"))
-          {
-            rebuildThread = new IndexRebuildThread(entryContainer,
-                                            IndexRebuildThread.IndexType.DN2ID);
-          }
-          else if (lowerName.equals("dn2uri"))
-          {
-            rebuildThread = new IndexRebuildThread(entryContainer,
-                                           IndexRebuildThread.IndexType.DN2URI);
-          }
-          else if (lowerName.equals("id2children"))
-          {
-            rebuildThread = new IndexRebuildThread(entryContainer,
-                                      IndexRebuildThread.IndexType.ID2CHILDREN);
-          }
-          else if (lowerName.equals("id2subtree"))
-          {
-            rebuildThread = new IndexRebuildThread(entryContainer,
-                                       IndexRebuildThread.IndexType.ID2SUBTREE);
-          }
-          else if (lowerName.startsWith("vlv."))
-          {
-            if(lowerName.length() < 5)
-            {
-              Message msg = ERR_JEB_VLV_INDEX_NOT_CONFIGURED.get(lowerName);
-              throw new JebException(msg);
-            }
-
-            VLVIndex vlvIndex =
-                entryContainer.getVLVIndex(lowerName.substring(4));
-            if(vlvIndex == null)
-            {
-              Message msg =
-                  ERR_JEB_VLV_INDEX_NOT_CONFIGURED.get(lowerName.substring(4));
-              throw new JebException(msg);
-            }
-
-            rebuildThread = new IndexRebuildThread(entryContainer, vlvIndex);
-          }
-          else
-          {
-            String[] attrIndexParts = lowerName.split("\\.");
-            if(attrIndexParts.length <= 0)
-            {
-              Message msg = ERR_JEB_ATTRIBUTE_INDEX_NOT_CONFIGURED.get(index);
-              throw new JebException(msg);
-            }
-
-            AttributeType attrType =
-                DirectoryServer.getAttributeType(attrIndexParts[0]);
-
-            if (attrType == null)
-            {
-              Message msg = ERR_JEB_ATTRIBUTE_INDEX_NOT_CONFIGURED.get(index);
-              throw new JebException(msg);
-            }
-            AttributeIndex attrIndex =
-                entryContainer.getAttributeIndex(attrType);
-            if (attrIndex == null)
-            {
-              Message msg = ERR_JEB_ATTRIBUTE_INDEX_NOT_CONFIGURED.get(index);
-              throw new JebException(msg);
-            }
-
-            if(attrIndexParts.length > 1)
-            {
-              Index partialAttrIndex = null;
-              if(attrIndexParts[1].equals("presence"))
-              {
-                partialAttrIndex = attrIndex.presenceIndex;
-              }
-              else if(attrIndexParts[1].equals("equality"))
-              {
-                partialAttrIndex = attrIndex.equalityIndex;
-              }
-              else if(attrIndexParts[1].equals("substring"))
-              {
-                partialAttrIndex = attrIndex.substringIndex;
-              }
-              else if(attrIndexParts[1].equals("ordering"))
-              {
-                partialAttrIndex = attrIndex.orderingIndex;
-              }
-              else if(attrIndexParts[1].equals("approximate"))
-              {
-                partialAttrIndex = attrIndex.approximateIndex;
-              }
-
-              if(partialAttrIndex == null)
-              {
-                Message msg = ERR_JEB_ATTRIBUTE_INDEX_NOT_CONFIGURED.get(index);
-                throw new JebException(msg);
-              }
-
-              rebuildThread =
-                  new IndexRebuildThread(entryContainer, partialAttrIndex);
-            }
-            else
-            {
-              rebuildThread = new IndexRebuildThread(entryContainer,
-                                                     attrIndex);
-            }
-          }
-
-          waitingThreads.add(rebuildThread);
-
-          if(debugEnabled())
-          {
-            TRACER.debugInfo("Created rebuild thread %s",
-                             rebuildThread.getName());
-          }
-        }
-
-        //Log a start message.
-        long totalToProcess = 0;
-
-        for(IndexRebuildThread thread : waitingThreads)
-        {
-          totalToProcess += thread.getTotalEntries();
-        }
-
-        StringBuilder sb = new StringBuilder();
-        for(String index : rebuildList)
-        {
-          if(sb.length() > 0)
-          {
-            sb.append(", ");
-          }
-          sb.append(index);
-        }
-        Message message =
-            NOTE_JEB_REBUILD_START.get(sb.toString(), totalToProcess);
-        logError(message);
-
-        // Make a note of the time we started.
-        long startTime = System.currentTimeMillis();
-
-        // Start a timer for the progress report.
-        Timer timer = new Timer();
-        TimerTask progressTask = new ProgressTask();
-        timer.scheduleAtFixedRate(progressTask, progressInterval,
-                                  progressInterval);
-
-        entryContainer.exclusiveLock.lock();
-        try
-        {
-          for(IndexRebuildThread thread : waitingThreads)
-          {
-            thread.clearDatabase();
-          }
-        }
-        finally
-        {
-          if(!rebuildConfig.includesSystemIndex())
-          {
-            entryContainer.exclusiveLock.unlock();
-          }
-        }
-
-
-        if(!rebuildConfig.includesSystemIndex())
-        {
-          entryContainer.sharedLock.lock();
-        }
-        try
-        {
-          while(!waitingThreads.isEmpty())
-          {
-            dispatchThreads();
-            joinThreads();
-          }
-        }
-        finally
-        {
-          timer.cancel();
-          if(rebuildConfig.includesSystemIndex())
-          {
-            entryContainer.exclusiveLock.unlock();
-          }
-          else
-          {
-            entryContainer.sharedLock.unlock();
-          }
-        }
-
-        long totalProcessed = 0;
-        long totalRebuilt = 0;
-        long totalDuplicated = 0;
-        long totalSkipped = 0;
-
-        for(IndexRebuildThread thread : completedThreads)
-        {
-          totalProcessed += thread.getProcessedEntries();
-          totalRebuilt += thread.getRebuiltEntries();
-          totalDuplicated += thread.getDuplicatedEntries();
-          totalSkipped += thread.getSkippedEntries();
-        }
-
-        long finishTime = System.currentTimeMillis();
-        long totalTime = (finishTime - startTime);
-
-        float rate = 0;
-        if (totalTime > 0)
-        {
-          rate = 1000f*totalProcessed / totalTime;
-        }
-
-        message = NOTE_JEB_REBUILD_FINAL_STATUS.get(
-            totalProcessed, totalTime/1000, rate);
-        logError(message);
-
-        if(debugEnabled())
-        {
-          TRACER.debugInfo("Detailed overall rebuild job stats: rebuilt %d, " +
-              "duplicated %d, skipped %d",
-                    totalRebuilt, totalDuplicated, totalSkipped);
-        }
-      }
-    }
-    finally
-    {
-      removeJob(this);
-    }
-
-  }
-
-  /**
-   * Dispatch a set of threads based on their dependency and ordering.
-   */
-  private void dispatchThreads() throws DatabaseException
-  {
-    for(IndexRebuildThread t : waitingThreads)
-    {
-      boolean start = true;
-
-      //Check to see if we have exceeded the max number of threads to use at
-      //one time.
-      if(rebuildConfig.getMaxRebuildThreads() > 0 &&
-          activeThreads.size() > rebuildConfig.getMaxRebuildThreads())
-      {
-        if(debugEnabled())
-        {
-          TRACER.debugInfo("Delaying the start of thread %s because " +
-              "the max number of rebuild threads has been reached.");
-        }
-        start = false;
-      }
-
-      /**
-       * We may need to start the threads in stages since the rebuild process
-       * of some index types (id2children, id2subtree) depends on another
-       * index being rebuilt to be completed first.
-       */
-      if(t.getIndexType() == IndexRebuildThread.IndexType.ID2CHILDREN ||
-          t.getIndexType() == IndexRebuildThread.IndexType.ID2SUBTREE)
-      {
-        //Check to see if we have any waiting threads that needs to go
-        //first
-        for(IndexRebuildThread t2 : waitingThreads)
-        {
-          if(t2.getIndexType() == IndexRebuildThread.IndexType.DN2ID ||
-              t2.getIndexType() == IndexRebuildThread.IndexType.DN2URI)
-          {
-            //We gotta wait for these to start before running the
-            //rebuild on ID2CHILDREN or ID2SUBTREE
-
-            if(debugEnabled())
-            {
-              TRACER.debugInfo("Delaying the start of thread %s because " +
-                  "it depends on another index rebuilt to " +
-                  "go first.", t.getName());
-            }
-            start = false;
-            break;
-          }
-        }
-
-        //Check to see if we have any active threads that needs to
-        //finish first
-        for(IndexRebuildThread t3 : activeThreads)
-        {
-          if(t3.getIndexType() == IndexRebuildThread.IndexType.DN2ID ||
-              t3.getIndexType() == IndexRebuildThread.IndexType.DN2URI)
-          {
-            //We gotta wait for these to start before running the
-            //rebuild on ID2CHILDREN or ID2SUBTREE
-
-            if(debugEnabled())
-            {
-              TRACER.debugInfo("Delaying the start of thread %s because " +
-                  "it depends on another index being rebuilt to " +
-                  "finish.", t.getName());
-            }
-            start = false;
-            break;
-          }
-        }
-      }
-
-      if(start)
-      {
-        if(debugEnabled())
-        {
-          TRACER.debugInfo("Starting rebuild thread %s.", t.getName());
-        }
-        waitingThreads.remove(t);
-        activeThreads.add(t);
-        t.start();
-      }
-    }
-  }
-
-  /**
-   * Wait for all worker activeThreads to exit.
-   */
-  private void joinThreads()
-  {
-    for (IndexRebuildThread t : activeThreads)
-    {
-      try
-      {
-        t.join();
-
-        if(debugEnabled())
-        {
-          TRACER.debugInfo("Rebuild thread %s finished.", t.getName());
-        }
-        activeThreads.remove(t);
-        completedThreads.add(t);
-      }
-      catch (InterruptedException ie)
-      {
-        // No action needed?
-      }
-    }
-  }
-}

--
Gitblit v1.10.0