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