From a1393c28fbaa1385f5a14aa7810034a729bae074 Mon Sep 17 00:00:00 2001
From: Fabio Pistolesi <fabio.pistolesi@forgerock.com>
Date: Thu, 16 Apr 2015 17:00:49 +0000
Subject: [PATCH] OPENDJ-1941 CR-6639  dsconfig: impossible to edit a persistit backend configuration

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
index f1a333b..97d581d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
@@ -784,9 +784,18 @@
 
   /** {@inheritDoc} */
   @Override
-  public boolean isConfigurationChangeAcceptable(PersistitBackendCfg cfg, List<LocalizableMessage> unacceptableReasons)
+  public boolean isConfigurationChangeAcceptable(PersistitBackendCfg newCfg,
+      List<LocalizableMessage> unacceptableReasons)
   {
-    return checkConfigurationDirectories(cfg, unacceptableReasons);
+    long newSize = computeSize(newCfg);
+    long oldSize = computeSize(config);
+    return (newSize <= oldSize || memQuota.isMemoryAvailable(newSize - oldSize))
+        && checkConfigurationDirectories(newCfg, unacceptableReasons);
+  }
+
+  private long computeSize(PersistitBackendCfg cfg)
+  {
+    return cfg.getDBCacheSize() > 0 ? cfg.getDBCacheSize() : memQuota.memPercentToBytes(cfg.getDBCachePercent());
   }
 
   /**

--
Gitblit v1.10.0