From cf3a52a7591faffc24a890b5baebfd260b929fcd Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Fri, 08 Jun 2007 18:50:35 +0000
Subject: [PATCH] Fixed an issue where the error log doesn't actually log messages. Also improved the performance of the loggers when they are disabled.
---
opendj-sdk/opends/src/server/org/opends/server/loggers/ErrorLogger.java | 86 ++++++++++++++++++++++++++++++------------
1 files changed, 61 insertions(+), 25 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/loggers/ErrorLogger.java b/opendj-sdk/opends/src/server/org/opends/server/loggers/ErrorLogger.java
index 4d2fd39..78f0110 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/loggers/ErrorLogger.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/loggers/ErrorLogger.java
@@ -28,7 +28,7 @@
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.List;
import java.util.ArrayList;
import java.lang.reflect.Method;
@@ -69,8 +69,8 @@
// The set of error loggers that have been registered with the server. It
// will initially be empty.
- private static ConcurrentHashMap<DN, ErrorLogPublisher> errorPublishers =
- new ConcurrentHashMap<DN, ErrorLogPublisher>();
+ private static CopyOnWriteArrayList<ErrorLogPublisher> errorPublishers =
+ new CopyOnWriteArrayList<ErrorLogPublisher>();
// The singleton instance of this class for configuration purposes.
private static final ErrorLogger instance = new ErrorLogger();
@@ -88,30 +88,31 @@
/**
* Add an error log publisher to the error logger.
*
- * @param dn The DN of the configuration entry for the publisher.
* @param publisher The error log publisher to add.
*/
- public synchronized static void addErrorLogPublisher(DN dn,
- ErrorLogPublisher publisher)
+ public synchronized static void addErrorLogPublisher(
+ ErrorLogPublisher publisher)
{
- errorPublishers.put(dn, publisher);
+ errorPublishers.add(publisher);
}
/**
* Remove an error log publisher from the error logger.
*
- * @param dn The DN of the publisher to remove.
- * @return The publisher that was removed or null if it was not found.
+ * @param publisher The error log publisher to remove.
+ * @return True if the error log publisher is removed or false otherwise.
*/
- public synchronized static ErrorLogPublisher removeErrorLogPublisher(DN dn)
+ public synchronized static boolean removeErrorLogPublisher(
+ ErrorLogPublisher publisher)
{
- ErrorLogPublisher errorLogPublisher = errorPublishers.remove(dn);
- if(errorLogPublisher != null)
+ boolean removed = errorPublishers.remove(publisher);
+
+ if(removed)
{
- errorLogPublisher.close();
+ publisher.close();
}
- return errorLogPublisher;
+ return removed;
}
/**
@@ -119,7 +120,7 @@
*/
public synchronized static void removeAllErrorLogPublishers()
{
- for(ErrorLogPublisher publisher : errorPublishers.values())
+ for(ErrorLogPublisher publisher : errorPublishers)
{
publisher.close();
}
@@ -150,7 +151,7 @@
{
ErrorLogPublisher errorLogPublisher = getErrorPublisher(config);
- addErrorLogPublisher(config.dn(), errorLogPublisher);
+ addErrorLogPublisher(errorLogPublisher);
}
}
}
@@ -193,7 +194,7 @@
{
ErrorLogPublisher errorLogPublisher = getErrorPublisher(config);
- addErrorLogPublisher(config.dn(), errorLogPublisher);
+ addErrorLogPublisher(errorLogPublisher);
}
catch(ConfigException e)
{
@@ -231,7 +232,16 @@
ArrayList<String> messages = new ArrayList<String>();
DN dn = config.dn();
- ErrorLogPublisher errorLogPublisher = errorPublishers.get(dn);
+
+ ErrorLogPublisher errorLogPublisher = null;
+ for(ErrorLogPublisher publisher : errorPublishers)
+ {
+ if(publisher.getDN().equals(dn))
+ {
+ errorLogPublisher = publisher;
+ break;
+ }
+ }
if(errorLogPublisher == null)
{
@@ -259,7 +269,7 @@
else
{
// The publisher is being disabled so shut down and remove.
- removeErrorLogPublisher(config.dn());
+ removeErrorLogPublisher(errorLogPublisher);
}
}
@@ -273,9 +283,18 @@
List<String> unacceptableReasons)
{
DN dn = config.dn();
- ErrorLogPublisher errorLogPublisher = errorPublishers.get(dn);
- return errorLogPublisher != null;
+ ErrorLogPublisher errorLogPublisher = null;
+ for(ErrorLogPublisher publisher : errorPublishers)
+ {
+ if(publisher.getDN().equals(dn))
+ {
+ errorLogPublisher = publisher;
+ break;
+ }
+ }
+
+ return errorLogPublisher != null;
}
/**
@@ -288,7 +307,24 @@
ResultCode resultCode = ResultCode.SUCCESS;
boolean adminActionRequired = false;
- removeErrorLogPublisher(config.dn());
+ ErrorLogPublisher errorLogPublisher = null;
+ for(ErrorLogPublisher publisher : errorPublishers)
+ {
+ if(publisher.getDN().equals(config.dn()))
+ {
+ errorLogPublisher = publisher;
+ break;
+ }
+ }
+
+ if(errorLogPublisher != null)
+ {
+ removeErrorLogPublisher(errorLogPublisher);
+ }
+ else
+ {
+ resultCode = ResultCode.NO_SUCH_OBJECT;
+ }
return new ConfigChangeResult(resultCode, adminActionRequired);
}
@@ -392,7 +428,7 @@
{
String message = MessageHandler.getMessage(errorID);
- for (ErrorLogPublisher publisher : errorPublishers.values())
+ for (ErrorLogPublisher publisher : errorPublishers)
{
publisher.logError(category, severity, message, errorID);
}
@@ -418,7 +454,7 @@
{
String message = MessageHandler.getMessage(errorID, args);
- for (ErrorLogPublisher publisher : errorPublishers.values())
+ for (ErrorLogPublisher publisher : errorPublishers)
{
publisher.logError(category, severity, message, errorID);
}
@@ -441,7 +477,7 @@
ErrorLogSeverity severity, String message,
int errorID)
{
- for (ErrorLogPublisher publisher : errorPublishers.values())
+ for (ErrorLogPublisher publisher : errorPublishers)
{
publisher.logError(category, severity, message, errorID);
}
--
Gitblit v1.10.0