From d3f720ebd77231a9703f59c3932fb9c80f4c7acb Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Tue, 24 Nov 2009 15:14:33 +0000
Subject: [PATCH] - upgrade to BDB JE 4 [ 4.0.73 ]
---
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/JECompressedSchema.java | 4
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java | 29 +++------
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EnvManager.java | 4
opendj-sdk/opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java | 6 -
opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java | 4
opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationDB.java | 6 +-
opendj-sdk/opends/src/messages/messages/jeb.properties | 3 +
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/RootContainer.java | 26 +++-----
opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDB.java | 6 +-
opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDbHandler.java | 4
opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationDbEnv.java | 4
opendj-sdk/opends/lib/je.jar | 0
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java | 4
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java | 26 +++++---
14 files changed, 56 insertions(+), 70 deletions(-)
diff --git a/opendj-sdk/opends/lib/je.jar b/opendj-sdk/opends/lib/je.jar
index 90f8e56..5f5cc3c 100644
--- a/opendj-sdk/opends/lib/je.jar
+++ b/opendj-sdk/opends/lib/je.jar
Binary files differ
diff --git a/opendj-sdk/opends/src/messages/messages/jeb.properties b/opendj-sdk/opends/src/messages/messages/jeb.properties
index 75266f8..14b248f 100644
--- a/opendj-sdk/opends/src/messages/messages/jeb.properties
+++ b/opendj-sdk/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
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
index 5996971..d3328ca 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
+++ b/opendj-sdk/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(),
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java
index 2ef8332..9fcaf4d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java
+++ b/opendj-sdk/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(
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EnvManager.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EnvManager.java
index 1385c65..06e78d7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EnvManager.java
+++ b/opendj-sdk/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.");
}
};
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java
index 1e3fad5..7568d67 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java
+++ b/opendj-sdk/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))
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/JECompressedSchema.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/JECompressedSchema.java
index b02101f..5e0365e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/JECompressedSchema.java
+++ b/opendj-sdk/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;
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/RootContainer.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/RootContainer.java
index 3d2e316..219c6c7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/RootContainer.java
+++ b/opendj-sdk/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();
+ }
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java b/opendj-sdk/opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java
index c411090..fcf0bed 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/monitors/DatabaseEnvironmentMonitor.java
+++ b/opendj-sdk/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;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java
index c92f881..590ac3f 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java
+++ b/opendj-sdk/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)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDB.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDB.java
index 629100d..c2f2440 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDB.java
+++ b/opendj-sdk/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
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDbHandler.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDbHandler.java
index f3e1e4f..3c3d18d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DraftCNDbHandler.java
+++ b/opendj-sdk/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)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationDB.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationDB.java
index a86bb11..0e045bc 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationDB.java
+++ b/opendj-sdk/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
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationDbEnv.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationDbEnv.java
index cc9b74e..cc9d667 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationDbEnv.java
+++ b/opendj-sdk/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);
/*
--
Gitblit v1.10.0