From aea0892feca2fd3d56c9c810debed6d22389454e Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 11 Jul 2014 09:54:43 +0000
Subject: [PATCH] OPENDJ-1453 (CR-3938) Replica offline messages should be synced with updates

---
 opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java |   37 +++++++++++++++++++++++++++++++------
 1 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
index 2c6d9a8..61a993c 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -54,6 +54,7 @@
 import org.opends.server.replication.server.changelog.api.ChangelogDB;
 import org.opends.server.replication.server.changelog.api.ChangelogException;
 import org.opends.server.replication.server.changelog.je.JEChangelogDB;
+import org.opends.server.replication.service.DSRSShutdownSync;
 import org.opends.server.types.*;
 import org.opends.server.util.ServerConstants;
 import org.opends.server.workflowelement.externalchangelog.ECLWorkflowElement;
@@ -79,6 +80,7 @@
 
   /** The current configuration of this replication server. */
   private ReplicationServerCfg config;
+  private final DSRSShutdownSync dsrsShutdownSync;
 
   /**
    * This table is used to store the list of dn for which we are currently
@@ -122,18 +124,31 @@
   /**
    * Creates a new Replication server using the provided configuration entry.
    *
-   * @param configuration The configuration of this replication server.
+   * @param cfg The configuration of this replication server.
    * @throws ConfigException When Configuration is invalid.
    */
-  public ReplicationServer(ReplicationServerCfg configuration)
-    throws ConfigException
+  public ReplicationServer(ReplicationServerCfg cfg) throws ConfigException
   {
-    this.config = configuration;
-    this.changelogDB = new JEChangelogDB(this, configuration);
+    this(cfg, new DSRSShutdownSync());
+  }
+
+  /**
+   * Creates a new Replication server using the provided configuration entry.
+   *
+   * @param cfg The configuration of this replication server.
+   * @param dsrsShutdownSync Synchronization object for shutdown of combined DS/RS instances.
+   * @throws ConfigException When Configuration is invalid.
+   */
+  public ReplicationServer(ReplicationServerCfg cfg,
+      DSRSShutdownSync dsrsShutdownSync) throws ConfigException
+  {
+    this.config = cfg;
+    this.changelogDB = new JEChangelogDB(this, cfg);
+    this.dsrsShutdownSync = dsrsShutdownSync;
 
     replSessionSecurity = new ReplSessionSecurity();
     initialize();
-    configuration.addChangeListener(this);
+    cfg.addChangeListener(this);
 
     localPorts.add(getReplicationPort());
 
@@ -1183,6 +1198,16 @@
     return this.changelogDB;
   }
 
+  /**
+   * Returns the synchronization object for shutdown of combined DS/RS instances.
+   *
+   * @return the synchronization object for shutdown of combined DS/RS instances.
+   */
+  DSRSShutdownSync getDSRSShutdownSync()
+  {
+    return dsrsShutdownSync;
+  }
+
   /** {@inheritDoc} */
   @Override
   public String toString()

--
Gitblit v1.10.0