From e7f8533cf460901e7ec3503782d7b78baabd55a3 Mon Sep 17 00:00:00 2001
From: Fabio Pistolesi <fabio.pistolesi@forgerock.com>
Date: Fri, 13 Feb 2015 16:24:23 +0000
Subject: [PATCH] OPENDJ-1793 Convert PersistItBackendCfg references to PluggableBackendCfg
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java | 85 ++++++++++++++++++++++++------------------
1 files changed, 49 insertions(+), 36 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
index 1040b87..77c929a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
@@ -35,7 +35,6 @@
import java.io.File;
import java.io.IOException;
import java.util.*;
-import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import org.forgerock.i18n.LocalizableMessage;
@@ -47,7 +46,7 @@
import org.forgerock.util.Reject;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.meta.BackendIndexCfgDefn;
-import org.opends.server.admin.std.server.PersistitBackendCfg;
+import org.opends.server.admin.std.server.PluggableBackendCfg;
import org.opends.server.api.AlertGenerator;
import org.opends.server.api.Backend;
import org.opends.server.api.DiskSpaceMonitorHandler;
@@ -65,14 +64,14 @@
* This is an implementation of a Directory Server Backend which stores entries
* locally in a Berkeley DB JE database.
*/
-public abstract class BackendImpl extends Backend<PersistitBackendCfg> implements
- ConfigurationChangeListener<PersistitBackendCfg>, AlertGenerator,
+public abstract class BackendImpl extends Backend<PluggableBackendCfg> implements
+ ConfigurationChangeListener<PluggableBackendCfg>, AlertGenerator,
DiskSpaceMonitorHandler
{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
/** The configuration of this backend. */
- private PersistitBackendCfg cfg;
+ private PluggableBackendCfg cfg;
/** The root JE container to use for this backend. */
private RootContainer rootContainer;
@@ -83,6 +82,7 @@
private DN[] baseDNs;
private MonitorProvider<?> rootContainerMonitor;
+ /** Disk space monitoring if the storage supports it. */
private DiskSpaceMonitor diskMonitor;
/** The controls supported by this backend. */
@@ -128,7 +128,7 @@
/** {@inheritDoc} */
@Override
- public void configureBackend(PersistitBackendCfg cfg) throws ConfigException
+ public void configureBackend(PluggableBackendCfg cfg) throws ConfigException
{
Reject.ifNull(cfg);
@@ -179,27 +179,44 @@
DirectoryServer.registerMonitorProvider(rootContainerMonitor);
// Register as disk space monitor handler
- File parentDirectory = getFileForPath(cfg.getDBDirectory());
- File backendDirectory =
- new File(parentDirectory, cfg.getBackendId());
- diskMonitor = new DiskSpaceMonitor(getBackendID() + " backend",
- backendDirectory, cfg.getDiskLowThreshold(), cfg.getDiskFullThreshold(),
- 5, TimeUnit.SECONDS, this);
- diskMonitor.initializeMonitorProvider(null);
- DirectoryServer.registerMonitorProvider(diskMonitor);
-
+ diskMonitor = newDiskMonitor(cfg);
+ if (diskMonitor != null)
+ {
+ DirectoryServer.registerMonitorProvider(diskMonitor);
+ }
//Register as an AlertGenerator.
DirectoryServer.registerAlertGenerator(this);
// Register this backend as a change listener.
- cfg.addPersistitChangeListener(this);
+ cfg.addPluggableChangeListener(this);
}
+ /**
+ * Let the storage create a new disk monitor if supported.
+ *
+ * @param cfg this storage current configuration
+ * @return a new disk monitor if supported or null
+ *
+ * @throws ConfigException if configuration is incorrect
+ * @throws InitializationException when disk monitor cannot be initialized
+ */
+ protected abstract DiskSpaceMonitor newDiskMonitor(PluggableBackendCfg cfg) throws
+ ConfigException, InitializationException;
+
+ /**
+ * Updates the disk monitor when configuration changes.
+ *
+ * @param dm the disk monitor to update
+ * @param newCfg the new configuration
+ */
+ protected abstract void updateDiskMonitor(DiskSpaceMonitor dm, PluggableBackendCfg newCfg);
+
+
/** {@inheritDoc} */
@Override
public void finalizeBackend()
{
super.finalizeBackend();
- cfg.removePersistitChangeListener(this);
+ cfg.removePluggableChangeListener(this);
// Deregister our base DNs.
for (DN dn : rootContainer.getBaseDNs())
@@ -722,8 +739,7 @@
public void createBackup(BackupConfig backupConfig) throws DirectoryException
{
BackupManager backupManager = new BackupManager(getBackendID());
- File parentDir = getFileForPath(cfg.getDBDirectory());
- File backendDir = new File(parentDir, cfg.getBackendId());
+ File backendDir = getBackupDirectory(cfg);
Storage storage = newStorageInstance();
backupConfig.setFilesToBackupFilter(storage.getFilesToBackupFilter());
backupManager.createBackup(backendDir, backupConfig);
@@ -735,7 +751,6 @@
*/
protected abstract Storage newStorageInstance();
-
/** {@inheritDoc} */
@Override
public void removeBackup(BackupDirectory backupDirectory, String backupID)
@@ -745,25 +760,27 @@
backupManager.removeBackup(backupDirectory, backupID);
}
-
-
/** {@inheritDoc} */
@Override
public void restoreBackup(RestoreConfig restoreConfig)
throws DirectoryException
{
BackupManager backupManager = new BackupManager(getBackendID());
- File parentDir = getFileForPath(cfg.getDBDirectory());
- File backendDir = new File(parentDir, cfg.getBackendId());
+ File backendDir = getBackupDirectory(cfg);
backupManager.restoreBackup(backendDir, restoreConfig);
}
-
+ /**
+ * Returns the backup directory.
+ *
+ * @param cfg the configuration for this backend
+ * @return the backup directory
+ */
+ protected abstract File getBackupDirectory(PluggableBackendCfg cfg);
/** {@inheritDoc} */
@Override
- public boolean isConfigurationAcceptable(PersistitBackendCfg config,
- List<LocalizableMessage> unacceptableReasons)
+ public boolean isConfigurationAcceptable(PluggableBackendCfg config, List<LocalizableMessage> unacceptableReasons)
{
return isConfigurationChangeAcceptable(config, unacceptableReasons);
}
@@ -772,9 +789,7 @@
/** {@inheritDoc} */
@Override
- public boolean isConfigurationChangeAcceptable(
- PersistitBackendCfg cfg,
- List<LocalizableMessage> unacceptableReasons)
+ public boolean isConfigurationChangeAcceptable(PluggableBackendCfg cfg, List<LocalizableMessage> unacceptableReasons)
{
return true;
}
@@ -783,7 +798,7 @@
/** {@inheritDoc} */
@Override
- public ConfigChangeResult applyConfigurationChange(final PersistitBackendCfg newCfg)
+ public ConfigChangeResult applyConfigurationChange(final PluggableBackendCfg newCfg)
{
final ConfigChangeResult ccr = new ConfigChangeResult();
try
@@ -807,11 +822,9 @@
baseDNs = newBaseDNsArray;
- if(cfg.getDiskFullThreshold() != newCfg.getDiskFullThreshold() ||
- cfg.getDiskLowThreshold() != newCfg.getDiskLowThreshold())
+ if (diskMonitor != null)
{
- diskMonitor.setFullThreshold(newCfg.getDiskFullThreshold());
- diskMonitor.setLowThreshold(newCfg.getDiskLowThreshold());
+ updateDiskMonitor(diskMonitor, newCfg);
}
// Put the new configuration in place.
@@ -906,7 +919,7 @@
* The StorageRuntimeException to be converted.
* @return DirectoryException created from exception.
*/
- DirectoryException createDirectoryException(StorageRuntimeException e)
+ private DirectoryException createDirectoryException(StorageRuntimeException e)
{
if (true) // FIXME JNR
{
--
Gitblit v1.10.0