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/collect.sh |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/.github/scripts/replication/collect.sh b/.github/scripts/replication/collect.sh
index 8aee017..a67b25a 100644
--- a/.github/scripts/replication/collect.sh
+++ b/.github/scripts/replication/collect.sh
@@ -56,6 +56,15 @@
     echo "| servers | $ALL_NODES |"
     echo "| load | $DURATION s on each directory server, at most $LOAD_MOD_RATE modifications and $LOAD_ADD_RATE adds or deletes a second |"
     echo "| seeded users | $SAMPLE_DATA |"
+    if [ -s "$OUT/disturbances.txt" ]; then
+      awk -v start="${LOAD_START_MS:-0}" '{ printf "| disturbance | %s of %s %d s into the load, serving again %d s later |\n",
+                                            $4, $3, ($1 - start) / 1000, ($2 - $1) / 1000 }' "$OUT/disturbances.txt"
+    elif [ "$DISTURBANCE" != none ] && [ -z "${LOAD_START_MS:-}" ]; then
+      # run.sh sets LOAD_START_MS as the load starts
+      echo "| disturbance | $DISTURBANCE at $DISTURB_AT s into the load, not started: the run ended before the load |"
+    elif [ "$DISTURBANCE" != none ]; then
+      echo "| disturbance | $DISTURBANCE at $DISTURB_AT s into the load, not completed |"
+    fi
     echo "| converged | ${CONVERGED_IN:--} s after the load |"
     if [ -s "$OUT/samples.txt" ]; then
       awk '{ t[$1] = 1 } END { for (s in t) { n++; if (!min || s < min) min = s; if (s > max) max = s }
@@ -85,6 +94,16 @@
       done | grep . || echo "none"
       echo '```'
     fi
+    if ls "$OUT"/logs/*.expected >/dev/null 2>&1; then
+      echo
+      echo "Handshakes failed while a disturbed server came back, which the disturbance expects (logs/*.expected):"
+      echo
+      echo '```'
+      for f in "$OUT"/logs/*.expected; do
+        sed "s/^/$(basename "$f" .expected): /" "$f"
+      done
+      echo '```'
+    fi
     if ls "$OUT"/load/*.csv >/dev/null 2>&1; then
       echo
       echo "| client | average ops/s | intervals |"

--
Gitblit v1.10.0