Skip to content

Commit 7a3ffa0

Browse files
committed
Fix.
1 parent ee2020e commit 7a3ffa0

1 file changed

Lines changed: 39 additions & 7 deletions

File tree

scratch/shawn/scripts/smurfhammerfunctions.sh

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,11 @@ monitor_server_startup() {
344344

345345
# Poll the latest log content (no buffering issues)
346346
local logs
347+
if ! docker ps --filter "name=^${container}$" --format '{{.ID}}' 2>/dev/null | grep -q .; then
348+
status_msg="Slot ${slot_number}: Container ${container} not found — waiting"
349+
sleep 1
350+
continue
351+
fi
347352
logs=$(docker logs "$container" 2>&1)
348353

349354
# Check for firmware mismatch
@@ -389,13 +394,40 @@ monitor_server_startup() {
389394
fi
390395
fi
391396

392-
# Detect heartbeat (server ZMQ/EPICS is responding)
393-
if ! $heartbeat_ok && echo "$logs" | grep -q "Running. Hit cntrl-c"; then
394-
if is_rogue_server_up ${slot_number} >/dev/null 2>&1; then
397+
# Detect server process is running, then verify heartbeat
398+
if ! $heartbeat_ok && echo "$logs" | grep -q "Running\. Hit cntrl-c"; then
399+
if [[ -t 1 ]]; then printf "\r\033[K"; fi
400+
success "Slot ${slot_number}: smurf_server_s${slot_number} process started ${DIM}(${elapsed}s)${RESET}"
401+
status_msg="Slot ${slot_number}: Verifying ZMQ heartbeat"
402+
403+
# Heartbeat retry loop — ZMQ takes a moment to bind after server starts
404+
local hb_start=$(date +%s)
405+
local hb_timeout=60
406+
local hb_ok=false
407+
while (( $(date +%s) - hb_start < hb_timeout )); do
408+
if [[ -t 1 ]]; then
409+
local hb_elapsed=$(( $(date +%s) - hb_start ))
410+
printf "\r\033[K ${CYAN}%s${RESET} Slot %s: Verifying heartbeat ${DIM}(%ds)${RESET}" \
411+
"${frames[$fi]}" "$slot_number" "$hb_elapsed"
412+
fi=$(( (fi + 1) % ${#frames[@]} ))
413+
fi
414+
if is_rogue_server_up ${slot_number} >/dev/null 2>&1; then
415+
hb_ok=true
416+
break
417+
fi
418+
sleep 2
419+
done
420+
421+
if $hb_ok; then
395422
heartbeat_ok=true
396423
if [[ -t 1 ]]; then printf "\r\033[K"; fi
397-
success "smurf_server_s${slot_number} rogue heartbeat detected ${DIM}(${elapsed}s)${RESET}"
398-
status_msg="Server running setDefaults"
424+
success "Slot ${slot_number}: Heartbeat confirmed (timestamp incrementing)"
425+
status_msg="Slot ${slot_number}: Waiting for server init to complete"
426+
else
427+
if [[ -t 1 ]]; then printf "\r\033[K"; fi
428+
warn "Slot ${slot_number}: Heartbeat not detected after ${hb_timeout}s — continuing anyway"
429+
heartbeat_ok=true
430+
status_msg="Slot ${slot_number}: Waiting for server init to complete"
399431
fi
400432
fi
401433

@@ -405,9 +437,9 @@ monitor_server_startup() {
405437
local current_try=$(echo "$logs" | grep -c "^Setting defaults from file")
406438
local retry_cnt=$(echo "$logs" | grep -o "retryCnt = [0-9]*" | tail -1 | grep -oP '[0-9]+')
407439
if [[ -n "$retry_cnt" && "$retry_cnt" -gt 0 ]]; then
408-
status_msg="setDefaults try ${current_try}, AppTop.Init() retry ${retry_cnt}/7"
440+
status_msg="Slot ${slot_number}: Server setDefaults try ${current_try}, JESD init retry ${retry_cnt}/7"
409441
else
410-
status_msg="setDefaults try ${current_try}, running AppTop.Init()"
442+
status_msg="Slot ${slot_number}: Server setDefaults try ${current_try}"
411443
fi
412444
fi
413445

0 commit comments

Comments
 (0)