From c4d91fab9e005179803a3ab978e8f2896a5a5b16 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Wed, 28 Oct 2026 16:25:28 +0000
Subject: [PATCH] [#1208] Restart a directory server during the load of the replication convergence run, in rows of its own (#1233)

---
 .github/scripts/replication/changelog-gaps.py |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/.github/scripts/replication/changelog-gaps.py b/.github/scripts/replication/changelog-gaps.py
index 2412ead..c90872f 100644
--- a/.github/scripts/replication/changelog-gaps.py
+++ b/.github/scripts/replication/changelog-gaps.py
@@ -35,12 +35,15 @@
 What it cannot tell. A change lost at either end of a replica's changes in the window - its
 last ones, or its first ones when no earlier change of the replica is in the changelog - leaves
 no gap between two changes that are there; the data of the other replicas shows such a change
-unless a later change of another server overwrites it. And not every sequence number that no
-record holds is a lost change: a directory server that goes offline (a restart, its domain
-disabled) numbers its ReplicaOfflineMsg like a change, and the changelog keeps only the newest
-of them, in the offline.state of the replica, not in a log file. The convergence run restarts
-no server after the topology is up; a run that did would read each restart in the window as a
-lost change.
+unless a later change of another server overwrites it.
+
+A restart leaves no gap of its own. A directory server that stops numbers its ReplicaOfflineMsg
+like a change, and no log file holds the message - only the offline.state of the replica, the
+newest one. But the message does not enter the ServerState of the replica
+(ReplicaOfflineMsg.contributesToDomainState()), from whose newest change of its own the server
+numbers again once it starts (CSNGenerator), so its first change after the restart takes the
+sequence number of the message again, at a later time: the changes of the restarted server had
+no gap in run 39834888428 (#1208). A gap around a restart is a lost change, the kind #1195 lost.
 
 The file format is the one of FileReplicaDB: every log file is cut into blocks of 256 bytes,
 and every block after the first starts with a 4-byte offset (BlockLogWriter); in between, a

--
Gitblit v1.10.0