From 691208eb996c52420a110d51ac4c50133f26dcee Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Wed, 14 May 2008 19:54:49 +0000
Subject: [PATCH] Fix for issue 3245. All sized based rotation policies are now re-evaluated on config change.

---
 opends/src/server/org/opends/server/loggers/MultifileTextWriter.java |   27 +++++++++++++++++++++++++--
 1 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/opends/src/server/org/opends/server/loggers/MultifileTextWriter.java b/opends/src/server/org/opends/server/loggers/MultifileTextWriter.java
index ba8123a..080fadc 100644
--- a/opends/src/server/org/opends/server/loggers/MultifileTextWriter.java
+++ b/opends/src/server/org/opends/server/loggers/MultifileTextWriter.java
@@ -368,11 +368,34 @@
   public ConfigChangeResult applyConfigurationChange(
       SizeLimitLogRotationPolicyCfg config)
   {
-    if(sizeLimit == 0 || sizeLimit > config.getFileSizeLimit())
+    long newSizeLimit = Integer.MAX_VALUE;
+
+    // Go through all current size rotation policies and get the
+    // lowest size setting.
+    for(RotationPolicy policy : rotationPolicies)
     {
-      sizeLimit = config.getFileSizeLimit();
+      if(policy instanceof SizeBasedRotationPolicy)
+      {
+        SizeBasedRotationPolicy sizePolicy = ((SizeBasedRotationPolicy)policy);
+        if(sizePolicy.currentConfig.dn().equals(config.dn()) )
+        {
+          if(newSizeLimit > config.getFileSizeLimit())
+          {
+            newSizeLimit = config.getFileSizeLimit();
+          }
+        }
+        else
+        {
+          if(newSizeLimit > sizePolicy.currentConfig.getFileSizeLimit())
+          {
+            newSizeLimit = sizePolicy.currentConfig.getFileSizeLimit();
+          }
+        }
+      }
     }
 
+    sizeLimit = newSizeLimit;
+
     return new ConfigChangeResult(ResultCode.SUCCESS, false,
                                   new ArrayList<Message>());
   }

--
Gitblit v1.10.0