From 2ac5818538b5755834cc872356fda708c2edaa6f Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 23 Dec 2014 16:10:54 +0000
Subject: [PATCH] OPENDJ-1706 Persistit: online import fails with NPE
---
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java | 35 +++++++++++++++++++++--------------
1 files changed, 21 insertions(+), 14 deletions(-)
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java
index 69616ce..2846df0 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java
@@ -995,11 +995,14 @@
// Notify all the add listeners that the entry has been added.
final ConfigChangeResult aggregatedResult = new ConfigChangeResult();
- for (ConfigAddListener l : addListeners)
+ for (ConfigAddListener l : addListeners) // This is an iterator over a COWArrayList
{
- final ConfigChangeResult result = l.applyConfigurationAdd(newEntry);
- aggregate(aggregatedResult, result);
- handleConfigChangeResult(result, newEntry.getDN(), l.getClass().getName(), "applyConfigurationAdd");
+ if (addListeners.contains(l))
+ { // ignore listeners that deregistered themselves
+ final ConfigChangeResult result = l.applyConfigurationAdd(newEntry);
+ aggregate(aggregatedResult, result);
+ handleConfigChangeResult(result, newEntry.getDN(), l.getClass().getName(), "applyConfigurationAdd");
+ }
}
throwIfUnsuccessful(aggregatedResult, ERR_CONFIG_FILE_ADD_APPLY_FAILED);
@@ -1095,11 +1098,14 @@
// Notify all the delete listeners that the entry has been removed.
final ConfigChangeResult aggregatedResult = new ConfigChangeResult();
- for (ConfigDeleteListener l : deleteListeners)
+ for (ConfigDeleteListener l : deleteListeners) // This is an iterator over a COWArrayList
{
- final ConfigChangeResult result = l.applyConfigurationDelete(entry);
- aggregate(aggregatedResult, result);
- handleConfigChangeResult(result, entry.getDN(), l.getClass().getName(), "applyConfigurationDelete");
+ if (deleteListeners.contains(l))
+ { // ignore listeners that deregistered themselves
+ final ConfigChangeResult result = l.applyConfigurationDelete(entry);
+ aggregate(aggregatedResult, result);
+ handleConfigChangeResult(result, entry.getDN(), l.getClass().getName(), "applyConfigurationDelete");
+ }
}
throwIfUnsuccessful(aggregatedResult, ERR_CONFIG_FILE_DELETE_APPLY_FAILED);
@@ -1208,11 +1214,14 @@
// Notify all the change listeners of the update.
final ConfigChangeResult aggregatedResult = new ConfigChangeResult();
- for (ConfigChangeListener l : changeListeners)
+ for (ConfigChangeListener l : changeListeners) // This is an iterator over a COWArrayList
{
- final ConfigChangeResult result = l.applyConfigurationChange(currentEntry);
- aggregate(aggregatedResult, result);
- handleConfigChangeResult(result, currentEntry.getDN(), l.getClass().getName(), "applyConfigurationChange");
+ if (changeListeners.contains(l))
+ { // ignore listeners that deregistered themselves
+ final ConfigChangeResult result = l.applyConfigurationChange(currentEntry);
+ aggregate(aggregatedResult, result);
+ handleConfigChangeResult(result, currentEntry.getDN(), l.getClass().getName(), "applyConfigurationChange");
+ }
}
throwIfUnsuccessful(aggregatedResult, ERR_CONFIG_FILE_MODIFY_APPLY_FAILED);
@@ -1379,8 +1388,6 @@
return null;
}
-
-
/**
* Performs a subtree search starting at the provided base entry, returning
* all entries anywhere in that subtree that match the provided filter.
--
Gitblit v1.10.0