From ecfef39261a93e691fd5e52a2ce0b4b88a032bef Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Thu, 24 Jan 2008 17:19:15 +0000
Subject: [PATCH] Improved error handling in logger retention policy enforcement. The rotater thread will now handle exceptions rasied during rotation and/or retention runs.

---
 opends/src/server/org/opends/server/loggers/MultifileTextWriter.java |   39 ++++++++++++++++++++++++++++-----------
 1 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/opends/src/server/org/opends/server/loggers/MultifileTextWriter.java b/opends/src/server/org/opends/server/loggers/MultifileTextWriter.java
index 313ce6b..6e83311 100644
--- a/opends/src/server/org/opends/server/loggers/MultifileTextWriter.java
+++ b/opends/src/server/org/opends/server/loggers/MultifileTextWriter.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ *      Portions Copyright 2006-2008 Sun Microsystems, Inc.
  */
 package org.opends.server.loggers;
 
@@ -427,18 +427,35 @@
 
         for(RetentionPolicy retentionPolicy : retentionPolicies)
         {
-          int numFilesDeleted =
-              retentionPolicy.deleteFiles(writer);
-          if(numFilesDeleted > 0)
+          try
           {
-            lastCleanTime = TimeThread.getCalendar();
-            lastCleanCount = numFilesDeleted;
-            totalFilesCleaned++;
+            File[] files =
+                retentionPolicy.deleteFiles(writer.getNamingPolicy());
+
+            for(File file : files)
+            {
+              file.delete();
+              totalFilesCleaned++;
+              if(debugEnabled())
+              {
+                TRACER.debugInfo(retentionPolicy.toString() +
+                    " cleaned up log file %s", file.toString());
+              }
+            }
+
+            if(files.length > 0)
+            {
+              lastCleanTime = TimeThread.getCalendar();
+              lastCleanCount = files.length;
+            }
           }
-          if (debugEnabled())
+          catch(DirectoryException de)
           {
-            TRACER.debugVerbose("%d files deleted by rentention policy",
-                         numFilesDeleted);
+            if(debugEnabled())
+            {
+              TRACER.debugCaught(DebugLogLevel.ERROR, de);
+            }
+            errorHandler.handleDeleteError(retentionPolicy, de);
           }
         }
       }
@@ -704,7 +721,7 @@
   }
 
   /**
-   * Retrieves teh total number of files cleaned in this instance of the
+   * Retrieves the total number of files cleaned in this instance of the
    * Directory Server.
    *
    * @return The total number of files cleaned.

--
Gitblit v1.10.0