mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

abobrov
24.14.2009 1edd5068bf0b63cbd67c615942ad5c545440d476
- upgrade to BDB JE 4 [ 4.0.73 ]
14 files modified
126 ■■■■■ changed files
opends/lib/je.jar patch | view | raw | blame | history
opends/src/messages/messages/jeb.properties 3 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/BackendImpl.java 29 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java 26 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/EnvManager.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/Index.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/JECompressedSchema.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/RootContainer.java 26 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/DbHandler.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/DraftCNDB.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/DraftCNDbHandler.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/ReplicationDB.java 6 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/ReplicationDbEnv.java 4 ●●●● patch | view | raw | blame | history
opends/lib/je.jar
Binary files differ
opends/src/messages/messages/jeb.properties
@@ -386,3 +386,6 @@
 entries to process
SEVERE_ERR_JEB_REBUILD_SUFFIX_ERROR_205=Rebuild of base DN %s failed \
because it not available
SEVERE_ERR_CONFIG_JEB_DURABILITY_CONFLICT_206=Configuration attributes \
 ds-cfg-db-txn-no-sync and ds-cfg-db-txn-write-no-sync are mutually \
 exclusive and cannot be both set at the same time
opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -40,8 +40,10 @@
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.RunRecoveryException;
import com.sleepycat.je.EnvironmentFailureException;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import org.opends.server.backends.jeb.importLDIF.*;
import org.opends.server.admin.std.meta.LocalDBIndexCfgDefn;
import org.opends.server.admin.std.server.MonitorProviderCfg;
@@ -312,7 +314,7 @@
    {
      EnvironmentConfig envConfig =
          ConfigurableEnvironment.parseConfigEntry(cfg);
      envConfig.setLockTimeout(0);
      envConfig.setLockTimeout(0, TimeUnit.MICROSECONDS);
      rootContainer = initializeRootContainer(envConfig);
    }
@@ -997,7 +999,6 @@
        envConfig.setReadOnly(true);
        envConfig.setAllowCreate(false);
        envConfig.setTransactional(false);
        envConfig.setTxnNoSync(false);
        envConfig.setConfigParam("je.env.isLocking", "true");
        envConfig.setConfigParam("je.env.runCheckpointer", "true");
@@ -1130,7 +1131,6 @@
      envConfig.setReadOnly(false);
      envConfig.setAllowCreate(true);
      envConfig.setTransactional(false);
      envConfig.setTxnNoSync(false);
      envConfig.setConfigParam(EnvironmentConfig.ENV_IS_LOCKING, "true");
      envConfig.setConfigParam(EnvironmentConfig.ENV_RUN_CHECKPOINTER, "false");
      envConfig.setConfigParam(EnvironmentConfig.ENV_RUN_CLEANER, "false");
@@ -1273,7 +1273,6 @@
        envConfig.setReadOnly(true);
        envConfig.setAllowCreate(false);
        envConfig.setTransactional(false);
        envConfig.setTxnNoSync(false);
        envConfig.setConfigParam("je.env.isLocking", "true");
        envConfig.setConfigParam("je.env.runCheckpointer", "true");
@@ -1364,7 +1363,6 @@
        envConfig.setReadOnly(false);
        envConfig.setAllowCreate(true);
        envConfig.setTransactional(false);
        envConfig.setTxnNoSync(false);
        envConfig.setConfigParam(EnvironmentConfig.ENV_IS_LOCKING, "true");
        envConfig.setConfigParam(
                               EnvironmentConfig.ENV_RUN_CHECKPOINTER, "false");
@@ -1522,18 +1520,9 @@
      List<Message> unacceptableReasons)
  {
    // Make sure that the logging level value is acceptable.
    String loggingLevel = cfg.getDBLoggingLevel();
    if (! (loggingLevel.equals("OFF") ||
           loggingLevel.equals("SEVERE") ||
           loggingLevel.equals("WARNING") ||
           loggingLevel.equals("INFORMATION") ||
           loggingLevel.equals("CONFIG") ||
           loggingLevel.equals("FINE") ||
           loggingLevel.equals("FINER") ||
           loggingLevel.equals("FINEST") ||
           loggingLevel.equals("OFF")))
    {
    try {
      Level.parse(cfg.getDBLoggingLevel());
    } catch (Exception e) {
      Message message = ERR_JEB_INVALID_LOGGING_LEVEL.get(
              String.valueOf(cfg.getDBLoggingLevel()),
              String.valueOf(cfg.dn()));
@@ -1665,7 +1654,6 @@
    envConfig.setReadOnly(true);
    envConfig.setAllowCreate(false);
    envConfig.setTransactional(false);
    envConfig.setTxnNoSync(false);
    envConfig.setConfigParam("je.env.isLocking", "true");
    envConfig.setConfigParam("je.env.runCheckpointer", "true");
@@ -1700,7 +1688,8 @@
  DirectoryException createDirectoryException(DatabaseException e) {
    ResultCode resultCode = DirectoryServer.getServerErrorResultCode();
    Message message;
    if (e instanceof RunRecoveryException) {
    if ((e instanceof EnvironmentFailureException) &&
            !rootContainer.isValid()) {
      message = NOTE_BACKEND_ENVIRONMENT_UNUSABLE.get(getBackendID());
      logError(message);
      DirectoryServer.sendAlertNotification(DirectoryServer.getInstance(),
opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java
@@ -26,6 +26,7 @@
 */
package org.opends.server.backends.jeb;
import com.sleepycat.je.Durability;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.dbi.MemoryBudget;
@@ -370,9 +371,6 @@
      registerProp("je.evictor.lruOnly", ATTR_EVICTOR_LRU_ONLY);
      registerProp("je.evictor.nodesPerScan", ATTR_EVICTOR_NODES_PER_SCAN);
      registerProp("je.log.fileMax", ATTR_DATABASE_LOG_FILE_MAX);
      registerProp("java.util.logging.FileHandler.on",
                   ATTR_LOGGING_FILE_HANDLER_ON);
      registerProp("java.util.logging.level", ATTR_LOGGING_LEVEL);
      registerProp("je.checkpointer.bytesInterval",
                   ATTR_CHECKPOINTER_BYTES_INTERVAL);
      registerProp("je.checkpointer.wakeupInterval",
@@ -469,9 +467,20 @@
    EnvironmentConfig envConfig = defaultConfig();
    // Handle the attributes that do not have a JE property.
    envConfig.setTxnNoSync(cfg.isDBTxnNoSync());
    envConfig.setTxnWriteNoSync(cfg.isDBTxnWriteNoSync());
    // Durability settings.
    if (cfg.isDBTxnNoSync() && cfg.isDBTxnWriteNoSync())
    {
      throw new ConfigException(
              ERR_CONFIG_JEB_DURABILITY_CONFLICT.get());
    }
    if (cfg.isDBTxnNoSync())
    {
      envConfig.setDurability(Durability.COMMIT_NO_SYNC);
    }
    if (cfg.isDBTxnWriteNoSync())
    {
      envConfig.setDurability(Durability.COMMIT_WRITE_NO_SYNC);
    }
    // Iterate through the config attributes associated with a JE property.
    for (Map.Entry<String, String> mapEntry : attrMap.entrySet())
@@ -534,11 +543,6 @@
        // Set JE property.
        try {
          envConfig.setConfigParam(jePropertyName, jePropertyValue);
          // This is a special case that JE cannot validate before
          // actually setting it. Validate it before it gets to JE.
          if (jePropertyName.equals("java.util.logging.level")) {
            java.util.logging.Level.parse(jePropertyValue);
          }
          // If this property shadows an existing config attribute.
          if (configAttrMap.containsKey(jePropertyName)) {
            Message message = ERR_CONFIG_JE_PROPERTY_SHADOWS_CONFIG.get(
opends/src/server/org/opends/server/backends/jeb/EnvManager.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2006-2008 Sun Microsystems, Inc.
 *      Copyright 2006-2009 Sun Microsystems, Inc.
 */
package org.opends.server.backends.jeb;
import org.opends.messages.Message;
@@ -62,7 +62,7 @@
      {
        return name.endsWith(".jdb") ||
               name.endsWith(".del") ||
               name.equals("je.lck");
               name.startsWith("je.");
      }
    };
  }
opends/src/server/org/opends/server/backends/jeb/Index.java
@@ -314,7 +314,7 @@
  private void
  deleteKey(DatabaseEntry key, ImportIDSet importIdSet,
         DatabaseEntry data) throws DatabaseException {
    OperationStatus status  = read(null, key, data, LockMode.RMW);
    OperationStatus status  = read(null, key, data, LockMode.DEFAULT);
    if(status == OperationStatus.SUCCESS) {
      newImportIDSet.clear(false);
      newImportIDSet.remove(data.getData(), importIdSet);
@@ -337,7 +337,7 @@
  private void
  insertKey(DatabaseEntry key, ImportIDSet importIdSet,
         DatabaseEntry data) throws DatabaseException {
    OperationStatus status  = read(null, key, data, LockMode.RMW);
    OperationStatus status  = read(null, key, data, LockMode.DEFAULT);
    if(status == OperationStatus.SUCCESS) {
      newImportIDSet.clear(false);
      if (newImportIDSet.merge(data.getData(), importIdSet))
opends/src/server/org/opends/server/backends/jeb/JECompressedSchema.java
@@ -52,8 +52,8 @@
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.DeadlockException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.LockConflictException;
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;
@@ -655,7 +655,7 @@
                         DirectoryServer.getServerErrorResultCode(), m);
        }
      }
      catch (DeadlockException de)
      catch (LockConflictException ce)
      {
        continue;
      }
opends/src/server/org/opends/server/backends/jeb/RootContainer.java
@@ -637,22 +637,6 @@
  }
  /**
   * Get the environment lock stats of the JE environment used in this
   * root container.
   *
   * @param statsConfig The configuration to use for the EnvironmentStats
   *                    object.
   * @return The environment status of the JE environment.
   * @throws DatabaseException If an error occurs while retriving the stats
   *                           object.
   */
  public LockStats getEnvironmentLockStats(StatsConfig statsConfig)
      throws DatabaseException
  {
    return env.getLockStats(statsConfig);
  }
  /**
   * Get the environment transaction stats of the JE environment used
   * in this root container.
   *
@@ -1060,4 +1044,14 @@
    }
    return totalCleaned;
  }
  /**
   * Returns whether this container JE database environment is
   * open, valid and can be used.
   *
   * @return {@code true} if valid, or {@code false} otherwise.
   */
  public boolean isValid() {
    return env.isValid();
  }
}
opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2006-2008 Sun Microsystems, Inc.
 *      Copyright 2006-2009 Sun Microsystems, Inc.
 */
package org.opends.server.monitors;
@@ -49,7 +49,6 @@
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.EnvironmentStats;
import com.sleepycat.je.JEVersion;
import com.sleepycat.je.LockStats;
import com.sleepycat.je.StatsConfig;
import com.sleepycat.je.TransactionStats;
@@ -210,14 +209,12 @@
  public ArrayList<Attribute> getMonitorData()
  {
    EnvironmentStats environmentStats = null;
    LockStats lockStats = null;
    TransactionStats transactionStats = null;
    StatsConfig statsConfig = new StatsConfig();
    try
    {
      environmentStats = rootContainer.getEnvironmentStats(statsConfig);
      lockStats = rootContainer.getEnvironmentLockStats(statsConfig);
      transactionStats =
          rootContainer.getEnvironmentTransactionStats(statsConfig);
    } catch (DatabaseException e)
@@ -237,7 +234,6 @@
    monitorAttrs.add(Attributes.create(versionType, jeVersion));
    addAttributesForStatsObject(monitorAttrs, environmentStats, "Environment");
    addAttributesForStatsObject(monitorAttrs, lockStats, "Lock");
    addAttributesForStatsObject(monitorAttrs, transactionStats, "Transaction");
    return monitorAttrs;
opends/src/server/org/opends/server/replication/server/DbHandler.java
@@ -50,7 +50,7 @@
import org.opends.server.replication.server.ReplicationDB.ReplServerDBCursor;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.DeadlockException;
import com.sleepycat.je.LockConflictException;
/**
 * This class is used for managing the replicationServer database for each
@@ -460,7 +460,7 @@
          cursor.close();
          done = true;
        }
        catch (DeadlockException e)
        catch (LockConflictException e)
        {
          cursor.abort();
          if (tries == DEADLOCK_RETRIES)
opends/src/server/org/opends/server/replication/server/DraftCNDB.java
@@ -42,7 +42,7 @@
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.DeadlockException;
import com.sleepycat.je.LockConflictException;
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
@@ -126,7 +126,7 @@
          txn = null;
          done = true;
        }
        catch (DeadlockException e)
        catch (LockConflictException e)
        {
          if (txn != null)
            txn.abort();
@@ -565,7 +565,7 @@
        closeLockedCursor(cursor);
        cursor = null;
      }
      catch (DeadlockException e1)
      catch (LockConflictException e1)
      {
        // The DB documentation states that a DeadlockException
        // on the close method of a cursor that is aborting should
opends/src/server/org/opends/server/replication/server/DraftCNDbHandler.java
@@ -49,7 +49,7 @@
import org.opends.server.types.InitializationException;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.DeadlockException;
import com.sleepycat.je.LockConflictException;
/**
 * This class is used for managing the replicationServer database for each
@@ -365,7 +365,7 @@
      cursor.close();
      done = true;
    }
    catch (DeadlockException e)
    catch (LockConflictException e)
    {
      cursor.abort();
      if (tries == DEADLOCK_RETRIES)
opends/src/server/org/opends/server/replication/server/ReplicationDB.java
@@ -42,7 +42,7 @@
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Database;
import com.sleepycat.je.DeadlockException;
import com.sleepycat.je.LockConflictException;
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
@@ -130,7 +130,7 @@
          txn = null;
          done = true;
        }
        catch (DeadlockException e)
        catch (LockConflictException e)
        {
          if (txn != null)
            txn.abort();
@@ -535,7 +535,7 @@
        closeLockedCursor(cursor);
        cursor = null;
      }
      catch (DeadlockException e1)
      catch (LockConflictException e1)
      {
        // The DB documentation states that a DeadlockException
        // on the close method of a cursor that is aborting should
opends/src/server/org/opends/server/replication/server/ReplicationDbEnv.java
@@ -47,6 +47,7 @@
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
import java.util.concurrent.TimeUnit;
/**
 * This class is used to represent a Db environment that can be used
@@ -89,7 +90,6 @@
    envConfig.setAllowCreate(true);
    envConfig.setTransactional(true);
    envConfig.setConfigParam("je.cleaner.expunge", "true");
    envConfig.setConfigParam("java.util.logging.FileHandler.on", "true");
    envConfig.setConfigParam("je.cleaner.threads", "2");
    envConfig.setConfigParam("je.checkpointer.highPriority", "true");
@@ -102,7 +102,7 @@
    // deleted at the beginning of the Replication log, this should never
    // cause any deadlock. It is therefore safe to increase the TXN timeout
    // to 10 seconds.
    envConfig.setTxnTimeout(10000000);
    envConfig.setTxnTimeout(10, TimeUnit.SECONDS);
    dbEnvironment = new Environment(new File(path), envConfig);
    /*