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/run.sh |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/.github/scripts/replication/run.sh b/.github/scripts/replication/run.sh
index 306fed0..2f3d6d4 100755
--- a/.github/scripts/replication/run.sh
+++ b/.github/scripts/replication/run.sh
@@ -33,6 +33,13 @@
 . "$HERE/load.sh"
 . "$HERE/assert-converged.sh"
 . "$HERE/collect.sh"
+if [ "$DISTURBANCE" != none ]; then
+  [ -f "$HERE/disturb-$DISTURBANCE.sh" ] \
+    || { echo "unknown DISTURBANCE $DISTURBANCE: none, or the <name> of a disturb-<name>.sh in $HERE" >&2; exit 2; }
+  [ "$DISTURB_AT" -gt 0 ] && [ "$DISTURB_AT" -lt "$DURATION" ] \
+    || { echo "DISTURB_AT=$DISTURB_AT is not within the load of $DURATION s" >&2; exit 2; }
+  . "$HERE/disturb-$DISTURBANCE.sh"
+fi
 
 # the files of an earlier run would mix into this one's: the samples are appended to, and the
 # summary of a run that failed early would show what a run that got further left
@@ -67,7 +74,7 @@
 mark_logs
 record_server_ids
 
-phase "load ($DURATION s)"
+phase "load ($DURATION s${DISTURBED:+, $DISTURBANCE of $DISTURBED at $DISTURB_AT s})"
 # the changes of the load: assert_changelogs looks for gaps among the changes made in between
 LOAD_START_MS=$(($(date +%s) * 1000))
 sampler_start
@@ -75,7 +82,11 @@
 sampler_stop
 
 phase "converge"
-wait_converged
+load_end=$SECONDS
+# a disturbed server is left as topology_up leaves every server, and the wait for convergence
+# still counts from the end of the load
+[ "$DISTURBANCE" = none ] || settle
+wait_converged $load_end
 echo "converged in $CONVERGED_IN s"
 LOAD_END_MS=$(($(date +%s) * 1000))
 

--
Gitblit v1.10.0