From 840c825261ce76e69fbffe437861b40984d30d35 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Tue, 03 Oct 2006 13:47:20 +0000
Subject: [PATCH] At startup time, each changelog server establish a connection with each other changelog server.
---
opendj-sdk/opends/src/server/org/opends/server/changelog/ChangelogCache.java | 2
opendj-sdk/opends/src/server/org/opends/server/changelog/Changelog.java | 35 ++++++++++-------
opendj-sdk/opends/src/server/org/opends/server/changelog/ProtocolSession.java | 7 +++
opendj-sdk/opends/src/server/org/opends/server/changelog/SerializingProtocolSession.java | 8 ++++
opendj-sdk/opends/src/server/org/opends/server/changelog/ServerHandler.java | 14 +++++++
opendj-sdk/opends/src/server/org/opends/server/changelog/SocketSession.java | 8 ++++
6 files changed, 59 insertions(+), 15 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/changelog/Changelog.java b/opendj-sdk/opends/src/server/org/opends/server/changelog/Changelog.java
index 2fbe670..dd7006a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/changelog/Changelog.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/changelog/Changelog.java
@@ -89,7 +89,6 @@
private static HashMap<DN, ChangelogCache> baseDNs =
new HashMap<DN, ChangelogCache>();
- private String localhostname = "null";
private String localURL = "null";
private static boolean shutdown = false;
private short changelogServerId;
@@ -207,17 +206,27 @@
*/
StringConfigAttribute changelogServer =
(StringConfigAttribute) config.getConfigAttribute(changelogStub);
- if (changelogServer == null)
+ changelogServers = new ArrayList<String>();
+ if (changelogServer != null)
{
- changelogServers = new ArrayList<String>();
- }
- else
- {
- changelogServers = changelogServer.activeValues();
+ for (String serverURL : changelogServer.activeValues())
+ {
+ String[] splitStrings = serverURL.split(":");
+ try
+ {
+ changelogServers.add(
+ InetAddress.getByName(splitStrings[0]).getHostAddress()
+ + ":" + splitStrings[1]);
+ } catch (UnknownHostException e)
+ {
+ throw new ConfigException(MSGID_UNKNOWN_HOSTNAME,
+ e.getLocalizedMessage());
+ }
+ }
}
configAttributes.add(changelogServer);
- initialize(changelogServerId, changelogPort, changelogServers);
+ initialize(changelogServerId, changelogPort);
configDn = config.getDN();
DirectoryServer.registerConfigurableComponent(this);
@@ -384,12 +393,9 @@
*
* @param changelogId The unique identifier for this changelog.
* @param changelogPort The port on which the changelog should listen.
- * @param changelogServers The set of changelog servers that have been
- * defined.
*
*/
- private void initialize(short changelogId, int changelogPort,
- List<String> changelogServers)
+ private void initialize(short changelogId, int changelogPort)
{
try
{
@@ -408,9 +414,10 @@
/*
* Open changelog socket
*/
- localhostname = InetAddress.getLocalHost().getHostName();
+ String localhostname = InetAddress.getLocalHost().getHostName();
+ String localAdddress = InetAddress.getLocalHost().getHostAddress();
serverURL = localhostname + ":" + String.valueOf(changelogPort);
- localURL = localhostname + ":" + String.valueOf(changelogPort);
+ localURL = localAdddress + ":" + String.valueOf(changelogPort);
listenSocket = new ServerSocket(changelogPort);
/*
diff --git a/opendj-sdk/opends/src/server/org/opends/server/changelog/ChangelogCache.java b/opendj-sdk/opends/src/server/org/opends/server/changelog/ChangelogCache.java
index 460d4bc..c92a90b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/changelog/ChangelogCache.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/changelog/ChangelogCache.java
@@ -359,7 +359,7 @@
for (ServerHandler handler : changelogServers.values())
{
- mySet.add(handler.getServerURL());
+ mySet.add(handler.getServerAddressURL());
}
return mySet;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/changelog/ProtocolSession.java b/opendj-sdk/opends/src/server/org/opends/server/changelog/ProtocolSession.java
index e6a3c4f..177b974 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/changelog/ProtocolSession.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/changelog/ProtocolSession.java
@@ -83,4 +83,11 @@
public abstract SynchronizationMessage receive()
throws IOException, ClassNotFoundException,
DataFormatException;
+
+ /**
+ * Retrieve the IP address of the remote server.
+ *
+ * @return The IP address of the remote server.
+ */
+ public abstract String getRemoteAddress();
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/changelog/SerializingProtocolSession.java b/opendj-sdk/opends/src/server/org/opends/server/changelog/SerializingProtocolSession.java
index 7c742ac..23d87c2 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/changelog/SerializingProtocolSession.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/changelog/SerializingProtocolSession.java
@@ -103,4 +103,12 @@
}
return (SynchronizationMessage) socketInput.readObject();
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getRemoteAddress()
+ {
+ return socket.getInetAddress().getHostAddress();
+ }
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/changelog/ServerHandler.java b/opendj-sdk/opends/src/server/org/opends/server/changelog/ServerHandler.java
index fc482a8..d4cc9d6 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/changelog/ServerHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/changelog/ServerHandler.java
@@ -92,6 +92,7 @@
private boolean active = true;
private ServerWriter writer = null;
private DN baseDn = null;
+ private String serverAddressURL;
private static Map<ChangeNumber, ChangelogAckMessageList>
changelogsWaitingAcks = new HashMap<ChangeNumber, ChangelogAckMessageList>();
@@ -188,6 +189,8 @@
ChangelogStartMessage receivedMsg = (ChangelogStartMessage) msg;
serverId = receivedMsg.getServerId();
serverURL = receivedMsg.getServerURL();
+ String[] splittedURL = serverURL.split(":");
+ serverAddressURL = session.getRemoteAddress() + ":" + splittedURL[1];
serverIsLDAPserver = false;
this.baseDn = receivedMsg.getBaseDn();
if (baseDn == null)
@@ -262,6 +265,17 @@
}
/**
+ * Retrieves the Address URL for this server handler.
+ *
+ * @return The Address URL for this server handler,
+ * in the form of an IP address and port separated by a colon.
+ */
+ public String getServerAddressURL()
+ {
+ return serverAddressURL;
+ }
+
+ /**
* Retrieves the URL for this server handler.
*
* @return The URL for this server handler, in the form of an address and
diff --git a/opendj-sdk/opends/src/server/org/opends/server/changelog/SocketSession.java b/opendj-sdk/opends/src/server/org/opends/server/changelog/SocketSession.java
index cc65088..b19f27d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/changelog/SocketSession.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/changelog/SocketSession.java
@@ -120,4 +120,12 @@
+ totalLength + " bytes.");
}
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getRemoteAddress()
+ {
+ return socket.getInetAddress().getHostAddress();
+ }
}
--
Gitblit v1.10.0