From 2d735189c834108a2e5f7a795610372eb6d00aed Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Tue, 03 Jun 2014 08:45:08 +0000
Subject: [PATCH] OPENDJ-1467 : File Based Changelog must support replicas temporarily leaving the topology
---
opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java | 17 ++++++++++++++---
1 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
index a9f69ba..e1dbcd3 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
@@ -756,6 +756,7 @@
final ChangeNumberIndexer indexer = cnIndexer.get();
if (indexer != null)
{
+ notifyReplicaOnline(indexer, baseDN, updateMsg.getCSN().getServerId());
indexer.publishUpdateMsg(baseDN, updateMsg);
}
return wasCreated;
@@ -763,21 +764,31 @@
/** {@inheritDoc} */
@Override
- public void replicaHeartbeat(DN baseDN, CSN heartbeatCSN)
+ public void replicaHeartbeat(DN baseDN, CSN heartbeatCSN) throws ChangelogException
{
final ChangeNumberIndexer indexer = cnIndexer.get();
if (indexer != null)
{
+ notifyReplicaOnline(indexer, baseDN, heartbeatCSN.getServerId());
indexer.publishHeartbeat(baseDN, heartbeatCSN);
}
}
+ private void notifyReplicaOnline(final ChangeNumberIndexer indexer, final DN baseDN, final int serverId)
+ throws ChangelogException
+ {
+ if (indexer.isReplicaOffline(baseDN, serverId))
+ {
+ dbEnv.notifyReplicaOnline(baseDN, serverId);
+ }
+ }
+
/** {@inheritDoc} */
@Override
- public void replicaOffline(DN baseDN, CSN offlineCSN)
+ public void notifyReplicaOffline(DN baseDN, CSN offlineCSN)
throws ChangelogException
{
- dbEnv.addOfflineReplica(baseDN, offlineCSN);
+ dbEnv.notifyReplicaOffline(baseDN, offlineCSN);
final ChangeNumberIndexer indexer = cnIndexer.get();
if (indexer != null)
{
--
Gitblit v1.10.0