From 53e9b6737ff1f758a8b1cfc5c7fe6cebd158bf6e Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 29 Jan 2008 17:59:28 +0000
Subject: [PATCH] Fix for issue 2870: status and dsreplication status do not show replication monitoring The changes consist basically in using the new attributes "approx-older-change-not-synchronized-millis" and "missing-changes" in status and replication status command-lines. In fact a millisecond version of approx-older-change-not-synchronized-millis has been added in order the remote command-line to be able to provide a localized version of the date (instead of directly presenting the date that was written by the server).
---
opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/ConfigFromLDAP.java | 41 ++++++++++++++++++++++++-----------------
1 files changed, 24 insertions(+), 17 deletions(-)
diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/ConfigFromLDAP.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/ConfigFromLDAP.java
index c95b7b8..46747af 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/ConfigFromLDAP.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/statuspanel/ConfigFromLDAP.java
@@ -22,11 +22,12 @@
* CDDL HEADER END
*
*
- * Portions Copyright 2007 Sun Microsystems, Inc.
+ * Portions Copyright 2007-2008 Sun Microsystems, Inc.
*/
package org.opends.guitools.statuspanel;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
@@ -65,11 +66,11 @@
private HashSet<String> administrativeUsers = new HashSet<String>();
private Message errorMessage;
private boolean replicationConfigured = false;
- private HashSet<String> replicatedSuffixes = new HashSet<String>();
+ private ArrayList<String> replicatedSuffixes = new ArrayList<String>();
private HashMap<String, Integer> hmMissingChanges =
new HashMap<String, Integer>();
- private HashMap<String, Integer> hmAgeOfOldestMissingChanges =
- new HashMap<String, Integer>();
+ private HashMap<String, Long> hmAgeOfOldestMissingChanges =
+ new HashMap<String, Long>();
private String dn;
private String pwd;
@@ -504,13 +505,14 @@
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
ctls.setReturningAttributes(
new String[] {
- "ds-cfg-base-dn"
+ "ds-cfg-base-dn",
+ "ds-cfg-server-id"
});
filter = "(objectclass=ds-cfg-replication-domain)";
jndiName = new LdapName(
"cn=Multimaster Synchronization,cn=Synchronization Providers,cn=config");
-
+ ArrayList<String> replicaIds = new ArrayList<String>();
try
{
NamingEnumeration syncProviders = ctx.search(jndiName, filter, ctls);
@@ -519,7 +521,8 @@
{
SearchResult sr = (SearchResult)syncProviders.next();
- replicatedSuffixes.addAll(getValues(sr, "ds-cfg-base-dn"));
+ replicatedSuffixes.add(getFirstValue(sr, "ds-cfg-base-dn"));
+ replicaIds.add(getFirstValue(sr, "ds-cfg-server-id"));
}
}
catch (NameNotFoundException nse)
@@ -530,9 +533,10 @@
ctls.setSearchScope(SearchControls.ONELEVEL_SCOPE);
ctls.setReturningAttributes(
new String[] {
- "approximate-delay", "waiting-changes", "base-dn"
+ "approx-older-change-not-synchronized-millis", "missing-changes",
+ "base-dn", "server-id"
});
- filter = "(approximate-delay=*)";
+ filter = "(missing-changes=*)";
jndiName = new LdapName("cn=monitor");
@@ -547,16 +551,19 @@
SearchResult sr = (SearchResult)monitorEntries.next();
String dn = getFirstValue(sr, "base-dn");
+ String replicaId = getFirstValue(sr, "server-id");
- for (String baseDn: replicatedSuffixes)
+ for (int i=0; i<replicatedSuffixes.size(); i++)
{
-
- if (Utils.areDnsEqual(dn, baseDn))
+ String baseDn = replicatedSuffixes.get(i);
+ String id = replicaIds.get(i);
+ if (Utils.areDnsEqual(dn, baseDn) && id.equals(replicaId))
{
try
{
hmAgeOfOldestMissingChanges.put(baseDn,
- new Integer(getFirstValue(sr, "approximate-delay")));
+ new Long(getFirstValue(sr,
+ "approx-older-change-not-synchronized-millis")));
}
catch (Throwable t)
{
@@ -564,7 +571,7 @@
try
{
hmMissingChanges.put(baseDn,
- new Integer(getFirstValue(sr, "waiting-changes")));
+ new Integer(getFirstValue(sr, "missing-changes")));
}
catch (Throwable t)
{
@@ -762,7 +769,7 @@
{
BaseDNDescriptor.Type type;
int missingChanges = -1;
- int ageOfOldestMissingChange = -1;
+ long ageOfOldestMissingChange = -1;
String mapSuffixDn = null;
boolean replicated = false;
@@ -783,11 +790,11 @@
type = BaseDNDescriptor.Type.REPLICATED;
Integer missing = hmMissingChanges.get(mapSuffixDn);
- Integer age = hmAgeOfOldestMissingChanges.get(mapSuffixDn);
+ Long age = hmAgeOfOldestMissingChanges.get(mapSuffixDn);
if (age != null)
{
- ageOfOldestMissingChange = age.intValue();
+ ageOfOldestMissingChange = age.longValue();
}
if (missing != null)
--
Gitblit v1.10.0