From c4a9e74ee31f4e9cb00fd2bca69eee3e8853d72b Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Wed, 08 Apr 2009 15:46:12 +0000
Subject: [PATCH] Fix for issue 2070: Added validation of DB cache size before applying it to JE.

---
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

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 9987ab2..1af255b 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
@@ -27,6 +27,7 @@
 package org.opends.server.backends.jeb;
 
 import com.sleepycat.je.EnvironmentConfig;
+import com.sleepycat.je.dbi.MemoryBudget;
 
 import org.opends.server.config.ConfigConstants;
 import org.opends.server.config.ConfigException;
@@ -43,6 +44,7 @@
 import java.util.Arrays;
 
 import org.opends.messages.Message;
+import static org.opends.messages.JebMessages.*;
 
 import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.admin.std.server.LocalDBBackendCfg;
@@ -426,6 +428,21 @@
   public static EnvironmentConfig parseConfigEntry(LocalDBBackendCfg cfg)
        throws ConfigException
   {
+    // See if the db cache size setting is valid.
+    if(cfg.getDBCacheSize() != 0)
+    {
+      if (MemoryBudget.getRuntimeMaxMemory() < cfg.getDBCacheSize()) {
+        throw new ConfigException(
+            ERR_CONFIG_JEB_CACHE_SIZE_GREATER_THAN_JVM_HEAP.get(
+                cfg.getDBCacheSize(), MemoryBudget.getRuntimeMaxMemory()));
+      }
+      if (cfg.getDBCacheSize() < MemoryBudget.MIN_MAX_MEMORY_SIZE) {
+        throw new ConfigException(
+            ERR_CONFIG_JEB_CACHE_SIZE_TOO_SMALL.get(
+                cfg.getDBCacheSize(), MemoryBudget.MIN_MAX_MEMORY_SIZE));
+      }
+    }
+
     EnvironmentConfig envConfig = defaultConfig();
 
     // Handle the attributes that do not have a JE property.
@@ -445,13 +462,7 @@
     // See if there are any native JE properties specified in the config
     // and if so try to parse, evaluate and set them.
     SortedSet<String> jeProperties = cfg.getJEProperty();
-    try {
-      envConfig = setJEProperties(envConfig, jeProperties, attrMap);
-    } catch (ConfigException e) {
-      throw e;
-    }
-
-    return envConfig;
+    return setJEProperties(envConfig, jeProperties, attrMap);
   }
 
 

--
Gitblit v1.10.0