#!/usr/bin/env bash
# app 컨테이너 안에서 실행한다. 0.5초마다 node1, node2 에 각각 직접 접속해
# synchronous_commit=local 로 INSERT 를 시도하고 결과를 기록한다. W 는 쓰기 성공이다.
# 두 노드가 같은 시각에 W 를 기록하면 양쪽이 동시에 쓰기를 받은 것이다(split brain 구간).
# 사용: docker compose exec -T app bash /lab/scripts/dualcheck.sh <초>
end=$(( $(date +%s) + ${1:-60} ))
while [ "$(date +%s)" -lt "$end" ]; do
  t=$(date +%T.%3N)
  for h in node1 node2; do
    r=$(timeout 3 psql "host=$h dbname=appdb sslmode=require connect_timeout=2" -Atqc \
      "set synchronous_commit = local; insert into ticks(src) values ('dual-$h') returning 'W'" 2>&1 | tail -1 | cut -c1-60)
    printf '%s %s %s\n' "$t" "$h" "$r"
  done
  sleep 0.5
done
