From d15ad8f9bb0aa8d3e7da66123c7471ab1e7dc7a8 Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Mon, 29 Jan 2007 16:14:16 +0000
Subject: [PATCH] Fix #794 unit test should cover changelog to changelog communications
---
opends/src/server/org/opends/server/synchronization/changelog/Changelog.java | 70 ++++++++++++++++++++++++++---------
1 files changed, 52 insertions(+), 18 deletions(-)
diff --git a/opends/src/server/org/opends/server/synchronization/changelog/Changelog.java b/opends/src/server/org/opends/server/synchronization/changelog/Changelog.java
index 0857df9..4761d06 100644
--- a/opends/src/server/org/opends/server/synchronization/changelog/Changelog.java
+++ b/opends/src/server/org/opends/server/synchronization/changelog/Changelog.java
@@ -26,13 +26,23 @@
*/
package org.opends.server.synchronization.changelog;
+import static org.opends.server.loggers.Error.logError;
+import static org.opends.server.messages.MessageHandler.getMessage;
+import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.util.StaticUtils.getFileForPath;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
-import com.sleepycat.je.DatabaseException;
-
import org.opends.server.api.ConfigurableComponent;
import org.opends.server.api.DirectoryThread;
import org.opends.server.config.ConfigAttribute;
@@ -48,17 +58,7 @@
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
-import static org.opends.server.loggers.Error.logError;
-import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
-
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.io.File;
-import java.io.IOException;
+import com.sleepycat.je.DatabaseException;
/**
* Changelog Listener.
@@ -99,12 +99,14 @@
private ChangelogDbEnv dbEnv;
private int rcvWindow;
private int queueSize;
+ private String dbDirname = null;
static final String CHANGELOG_SERVER_ATTR = "ds-cfg-changelog-server";
static final String SERVER_ID_ATTR = "ds-cfg-changelog-server-id";
static final String CHANGELOG_PORT_ATTR = "ds-cfg-changelog-port";
static final String WINDOW_SIZE_ATTR = "ds-cfg-window-size";
static final String QUEUE_SIZE_ATTR = "ds-cfg-changelog-max-queue-size";
+ static final String CHANGELOG_DIR_PATH_ATTR = "ds-cfg-changelog-db-dirname";
static final IntegerConfigAttribute changelogPortStub =
new IntegerConfigAttribute(CHANGELOG_PORT_ATTR, "changelog port",
@@ -128,6 +130,11 @@
new IntegerConfigAttribute(QUEUE_SIZE_ATTR, "changelog queue size",
false, false, false, true, 0, false, 0);
+ static final StringConfigAttribute dbDirnameStub =
+ new StringConfigAttribute(CHANGELOG_DIR_PATH_ATTR,
+ "changelog storage directory path", false,
+ false, true);
+
/**
* Check if a ConfigEntry is valid.
* @param config The config entry that needs to be checked.
@@ -263,6 +270,35 @@
configAttributes.add(queueSizeAttr);
}
+ /*
+ * read the storage directory path attribute
+ */
+ StringConfigAttribute dbDirnameAttr =
+ (StringConfigAttribute) config.getConfigAttribute(dbDirnameStub);
+ if (dbDirnameAttr == null)
+ {
+ dbDirname = "changelogDb";
+ }
+ else
+ {
+ dbDirname = dbDirnameAttr.activeValue();
+ configAttributes.add(changelogServer);
+ }
+ // Exists or Create
+ File f = getFileForPath(dbDirname);
+ try
+ {
+ if (!f.exists())
+ {
+ f.mkdir();
+ }
+ }
+ catch (Exception e)
+ {
+ throw new ConfigException(MSGID_FILE_CHECK_CREATE_FAILED,
+ e.getMessage() + " " + getFileForPath(dbDirname));
+ }
+
initialize(changelogServerId, changelogPort);
configDn = config.getDN();
@@ -442,10 +478,8 @@
{
/*
* Initialize the changelog database.
- * TODO : the changelog db path should be configurable
*/
- dbEnv = new ChangelogDbEnv(
- DirectoryServer.getServerRoot() + File.separator + "changelogDb",
+ dbEnv = new ChangelogDbEnv(getFileForPath(dbDirname).getAbsolutePath(),
this);
/*
@@ -475,13 +509,13 @@
} catch (DatabaseException e)
{
int msgID = MSGID_COULD_NOT_INITIALIZE_DB;
- String message = getMessage(msgID, "changelogDb");
+ String message = getMessage(msgID, dbDirname);
logError(ErrorLogCategory.SYNCHRONIZATION, ErrorLogSeverity.SEVERE_ERROR,
message, msgID);
} catch (ChangelogDBException e)
{
int msgID = MSGID_COULD_NOT_READ_DB;
- String message = getMessage(msgID, "changelogDb");
+ String message = getMessage(msgID, dbDirname);
message += getMessage(e.getMessageID());
logError(ErrorLogCategory.SYNCHRONIZATION, ErrorLogSeverity.SEVERE_ERROR,
message, msgID);
--
Gitblit v1.10.0