From a2a74542282fa2eba683661058786625b50c6dc7 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Thu, 24 Sep 2026 06:37:59 +0000
Subject: [PATCH] [#1048] Hold the session restart a released change asks for while a total update runs (#1049)

---
 opendj-server-legacy/src/main/java/org/opends/server/replication/service/ReplicationDomain.java |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/service/ReplicationDomain.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/service/ReplicationDomain.java
index 80c6bbf..3dbca34 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/service/ReplicationDomain.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/service/ReplicationDomain.java
@@ -3521,8 +3521,12 @@
    * {@code SESSION_BEING_STOPPED}, held for the length of the stop and released once the
    * listener thread is gone - it is the one thread which claims a total update this replica
    * did not ask for, and {@link #disableService()} waits for it. An export in the context is
-   * not an owner: the session is stopped from under it and the exporter reports the cut, as
-   * it does for every other stop. A total update which lands between the end of that export
+   * not an owner here: the session is stopped from under it and the exporter reports the
+   * cut, as it does for every other stop. The session restart a replay asks for does not
+   * get this far while a total update runs - {@code runRequestedSessionRestarts()} leaves
+   * the request standing until it is over (issue #1048) - so an export reaches this arm only
+   * when it begins between that read and the claim below. A total update which lands
+   * between the end of that export
    * and the stop is refused by the listener when it reads the broker as stopping after its
    * claim; a stop which lands after that read still has the import run over a session which
    * is going down, and end as a failed import over the suffix it has replaced (issue

--
Gitblit v1.10.0