From acdfa16f35b3c3d0c79fad91585b0d03695452e4 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Mon, 07 Nov 2016 15:05:30 +0000
Subject: [PATCH] OPENDJ-3417 Several minor fixes to apply PR comments
---
opendj-server-legacy/src/main/java/org/opends/server/api/LocalBackend.java | 8 ++--
opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java | 9 +++-
opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java | 9 ----
opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java | 69 ++++++++++------------------------
opendj-server-legacy/src/test/java/org/opends/server/monitors/LocalBackendMonitorTestCase.java | 4 +-
5 files changed, 35 insertions(+), 64 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/api/LocalBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/api/LocalBackend.java
index 4c525c9..c06c722 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/api/LocalBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/api/LocalBackend.java
@@ -731,9 +731,9 @@
*
* @param parentBackend The parent backend for this backend.
*/
- public final synchronized void setParentBackend(Backend<?> parentBackend)
+ public final synchronized void setParentBackend(LocalBackend<?> parentBackend)
{
- this.parentBackend = (LocalBackend<?>) parentBackend;
+ this.parentBackend = parentBackend;
}
/**
@@ -756,12 +756,12 @@
* subordinate backends for this
* backend.
*/
- public final synchronized void addSubordinateBackend(Backend<?> subordinateBackend)
+ public final synchronized void addSubordinateBackend(LocalBackend<?> subordinateBackend)
{
LinkedHashSet<LocalBackend<?>> backendSet = new LinkedHashSet<>();
Collections.addAll(backendSet, subordinateBackends);
- if (backendSet.add((LocalBackend<?>) subordinateBackend))
+ if (backendSet.add(subordinateBackend))
{
subordinateBackends = backendSet.toArray(new LocalBackend[backendSet.size()]);
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
index 29f9206..87a8643 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
@@ -426,8 +426,6 @@
private Set<DN> getTopLevelPublicNamingContexts()
{
- // TODO: this implementation is insufficient because it handles only the local backends
- // The non-local backends must be added for completeness
return new HashSet<DN>(serverContext.getBackendConfigManager().getPublicNamingContexts().keySet());
}
@@ -490,12 +488,7 @@
@Override
public boolean entryExists(DN entryDN) throws DirectoryException
{
- // If the specified DN was the null DN, then it exists.
- if (entryDN.isRootDN())
- {
- return true;
- }
- return false;
+ return entryDN.isRootDN();
}
@Override
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java
index 42154c1..e032dc4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java
@@ -39,6 +39,7 @@
import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.LocalizableMessageDescriptor.Arg2;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
@@ -160,17 +161,10 @@
throw new ConfigException(ERR_CONFIG_BACKEND_BASE_DOES_NOT_EXIST.get());
}
initializeBackends(backendIDsToStart, root);
+ initializeRootDSEBackend();
}
- /**
- * Creates and initializes the Root DSE backend.
- *
- * @throws InitializationException
- * If the configuration entry can't be found
- * @throws ConfigException
- * If an error occurs during configuration
- */
- public void initializeRootDSEBackend() throws InitializationException, ConfigException
+ private void initializeRootDSEBackend() throws InitializationException, ConfigException
{
RootDSEBackendCfg rootDSECfg;
try
@@ -180,8 +174,7 @@
catch (Exception e)
{
logger.traceException(e);
- throw new InitializationException(ERR_CANNOT_GET_ROOT_DSE_CONFIG_ENTRY.get(
- stackTraceToSingleLineString(e)), e);
+ throw new InitializationException(ERR_CANNOT_GET_ROOT_DSE_CONFIG_ENTRY.get(stackTraceToSingleLineString(e)), e);
}
rootDSEBackend = new RootDSEBackend();
rootDSEBackend.configureBackend(rootDSECfg, serverContext);
@@ -347,7 +340,7 @@
ccr.addMessage(message);
}
- private void releaseSharedLock(Backend<?> backend, String backendID)
+ private void releaseSharedLock(Arg2<Object, Object> errorMessage, Backend<?> backend, String backendID)
{
try
{
@@ -355,16 +348,13 @@
StringBuilder failureReason = new StringBuilder();
if (! LockFileManager.releaseLock(lockFile, failureReason))
{
- logger.warn(WARN_CONFIG_BACKEND_CANNOT_RELEASE_SHARED_LOCK, backendID, failureReason);
- // FIXME -- Do we need to send an admin alert?
+ logger.warn(errorMessage, backendID, failureReason);
}
}
- catch (Exception e2)
+ catch (Exception e)
{
- logger.traceException(e2);
-
- logger.warn(WARN_CONFIG_BACKEND_CANNOT_RELEASE_SHARED_LOCK, backendID, stackTraceToSingleLineString(e2));
- // FIXME -- Do we need to send an admin alert?
+ logger.traceException(e);
+ logger.warn(errorMessage, backendID, stackTraceToSingleLineString(e));
}
}
@@ -792,7 +782,7 @@
backend.finalizeBackend();
- releaseSharedLock(backend, backend.getBackendID());
+ releaseSharedLock(WARN_CONFIG_BACKEND_CANNOT_RELEASE_SHARED_LOCK, backend, backend.getBackendID());
return ccr;
} // else already disabled, no need to do anything.
@@ -914,8 +904,7 @@
registeredBackends.put(backendCfg.dn(), backend);
return true;
}
- // TODO: manage proxy registration here
- return true;
+ throw new RuntimeException("registerBackend() is not yet supported for proxy backend.");
}
@Override
@@ -1073,7 +1062,7 @@
ccr.addMessage(ERR_CONFIG_BACKEND_CANNOT_INITIALIZE.get(
cfg.getJavaClass(), cfg.dn(), stackTraceToSingleLineString(e)));
- releaseSharedLock(backend, cfg.getBackendId());
+ releaseSharedLock(WARN_CONFIG_BACKEND_CANNOT_RELEASE_SHARED_LOCK, backend, cfg.getBackendId());
return false;
}
}
@@ -1113,7 +1102,6 @@
{
DN backendDN = configEntry.dn();
-
// See if this backend config manager has a backend registered with the
// provided DN. If not, then we don't care if the entry is deleted. If we
// do know about it, then that means that it is enabled and we will not
@@ -1124,7 +1112,6 @@
return true;
}
- // TODO: what about non local backend ?
if (backend instanceof LocalBackend)
{
// See if the backend has any subordinate backends. If so, then it is not
@@ -1135,8 +1122,9 @@
unacceptableReason.add(NOTE_CONFIG_BACKEND_CANNOT_REMOVE_BACKEND_WITH_SUBORDINATES.get(backendDN));
return false;
}
+ return true;
}
- return true;
+ throw new RuntimeException("isConfigurationDeleteAcceptable() is not yet supported for proxy backend.");
}
@Override
@@ -1153,7 +1141,6 @@
return ccr;
}
- // TODO: what about non local backend ?
if (backend instanceof LocalBackend)
{
// See if the backend has any subordinate backends. If so, then it is not
@@ -1166,6 +1153,10 @@
return ccr;
}
}
+ else
+ {
+ throw new RuntimeException("applyConfigurationDelete() is not yet supported for proxy backend.");
+ }
deregisterBackend(backendDN, backend);
@@ -1180,7 +1171,7 @@
configEntry.removeChangeListener(this);
- releaseSharedLock(backend, backend.getBackendID());
+ releaseSharedLock(WARN_CONFIG_BACKEND_CANNOT_RELEASE_SHARED_LOCK, backend, backend.getBackendID());
return ccr;
}
@@ -1204,7 +1195,7 @@
}
}
else {
- // TODO: manage proxy deregistering here
+ throw new RuntimeException("deregisterBackend() is not yet supported for proxy backend.");
}
}
@@ -1227,25 +1218,7 @@
listener.performBackendPostFinalizationProcessing(backend);
}
- // Remove the shared lock for this backend.
- try
- {
- String lockFile = LockFileManager.getBackendLockFileName(backend);
- StringBuilder failureReason = new StringBuilder();
- if (!LockFileManager.releaseLock(lockFile, failureReason))
- {
- logger.warn(WARN_SHUTDOWN_CANNOT_RELEASE_SHARED_BACKEND_LOCK, backend.getBackendID(), failureReason);
- // FIXME -- Do we need to send an admin alert?
- }
- }
- catch (Exception e2)
- {
- logger.traceException(e2);
-
- logger.warn(WARN_SHUTDOWN_CANNOT_RELEASE_SHARED_BACKEND_LOCK, backend.getBackendID(),
- stackTraceToSingleLineString(e2));
- // FIXME -- Do we need to send an admin alert?
- }
+ releaseSharedLock(WARN_SHUTDOWN_CANNOT_RELEASE_SHARED_BACKEND_LOCK, backend, backend.getBackendID());
}
catch (Exception e)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java b/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
index c973ac6..f32ee0a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
@@ -868,6 +868,7 @@
try
{
+ directoryServer.initializeBackendConfigManager();
directoryServer.initializeRootAndAdminDataBackends();
}
catch (InitializationException | ConfigException e)
@@ -1481,7 +1482,7 @@
new AlertHandlerConfigManager(serverContext).initializeAlertHandlers();
- backendConfigManager = new BackendConfigManager(serverContext);
+ initializeBackendConfigManager();
// Initialize the default entry cache. We have to have one before
// <CODE>initializeRootAndAdminDataBackends()</CODE> method kicks in further down.
@@ -1608,6 +1609,11 @@
}
}
+ private void initializeBackendConfigManager()
+ {
+ backendConfigManager = new BackendConfigManager(serverContext);
+ }
+
/** Delete "server.starting" and "hostname" files if they are present. */
private void deleteUnnecessaryFiles()
{
@@ -1754,7 +1760,6 @@
private void initializeRootAndAdminDataBackends() throws ConfigException, InitializationException
{
backendConfigManager.initializeBackendConfig(Arrays.asList("adminRoot", "ads-truststore"));
- backendConfigManager.initializeRootDSEBackend();
}
private void initializeRemainingBackends() throws ConfigException, InitializationException
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/monitors/BackendMonitorTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/monitors/LocalBackendMonitorTestCase.java
similarity index 92%
rename from opendj-server-legacy/src/test/java/org/opends/server/monitors/BackendMonitorTestCase.java
rename to opendj-server-legacy/src/test/java/org/opends/server/monitors/LocalBackendMonitorTestCase.java
index 316a4db..85ffb58 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/monitors/BackendMonitorTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/monitors/LocalBackendMonitorTestCase.java
@@ -22,14 +22,14 @@
/** This class defines a set of tests for the {@link LocalBackendMonitor} class. */
@Test
-public class BackendMonitorTestCase extends GenericMonitorTestCase
+public class LocalBackendMonitorTestCase extends GenericMonitorTestCase
{
/**
* Creates a new instance of this test case class.
*
* @throws Exception If an unexpected problem occurred.
*/
- public BackendMonitorTestCase() throws Exception
+ public LocalBackendMonitorTestCase() throws Exception
{
super(null);
}
--
Gitblit v1.10.0