From be2c14a6c751da319eeb4af36eeb5dea4c821acf Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Wed, 14 Mar 2012 22:34:27 +0000
Subject: [PATCH] Initial fix for OPENDJ-249: dsreplication disable --disableAll error removing contents of "cn=admin data"
---
opends/src/ads/org/opends/admin/ads/ADSContext.java | 34 +++++++++++++++++++++++++---------
1 files changed, 25 insertions(+), 9 deletions(-)
diff --git a/opends/src/ads/org/opends/admin/ads/ADSContext.java b/opends/src/ads/org/opends/admin/ads/ADSContext.java
index a1e3052..83d0563 100644
--- a/opends/src/ads/org/opends/admin/ads/ADSContext.java
+++ b/opends/src/ads/org/opends/admin/ads/ADSContext.java
@@ -1187,7 +1187,12 @@
{
// Add the administration suffix
createAdministrationSuffix(backendName);
+ createAdminDataContainers();
+ }
+ // Create container entries.
+ private void createAdminDataContainers() throws ADSContextException
+ {
// Create the DIT below the administration suffix
if (!isExistingEntry(nameFromDN(getAdministrationSuffixDN())))
{
@@ -1228,16 +1233,26 @@
}
}
+
+
/**
* Removes the administration data.
- * @throws ADSContextException if something goes wrong.
+ *
+ * @param removeAdministrators
+ * {@code true} if administrators should be removed. It may not be
+ * possible to remove administrators if the operation is being
+ * performed by one of the administrators because it will cause the
+ * administrator to be disconnected.
+ * @throws ADSContextException
+ * if something goes wrong.
*/
- public void removeAdminData() throws ADSContextException
+ public void removeAdminData(boolean removeAdministrators)
+ throws ADSContextException
{
String[] dns = {getServerContainerDN(),
getServerGroupContainerDN(),
getInstanceKeysContainerDN(),
- getAdministratorContainerDN()};
+ removeAdministrators ? getAdministratorContainerDN() : null };
try
{
Control[] controls = new Control[] { new SubtreeDeleteControl() };
@@ -1246,10 +1261,13 @@
{
for (String dn : dns)
{
- LdapName ldapName = nameFromDN(dn);
- if (isExistingEntry(ldapName))
+ if (dn != null)
{
- tmpContext.destroySubcontext(dn);
+ LdapName ldapName = nameFromDN(dn);
+ if (isExistingEntry(ldapName))
+ {
+ tmpContext.destroySubcontext(dn);
+ }
}
}
}
@@ -1267,9 +1285,7 @@
}
}
// Recreate the container entries:
- createContainerEntry(getServerContainerDN());
- createContainerEntry(getServerGroupContainerDN());
- createContainerEntry(getInstanceKeysContainerDN());
+ createAdminDataContainers();
}
catch(NamingException x)
{
--
Gitblit v1.10.0