Improve logging and handling for WebSocket message processing, delivery, and diagnostics.
Some checks failed
Go / build (push) Has been cancelled
Some checks failed
Go / build (push) Has been cancelled
- Enhanced logging for WebSocket writes, message handling, and delivery timing. - Added diagnostics for slow deliveries, failures, and context timeouts. - Incorporated extensive error handling for malformed messages and client notifications. - Enabled command results and refined subscription management. - Introduced detailed connection state tracking and metrics for messages, requests, and events. - Added new `run-market-probe.sh` script for relay testing and Market seeding.
This commit is contained in:
104
scripts/run-market-and-orly.sh
Executable file
104
scripts/run-market-and-orly.sh
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# run-relay-and-seed.sh
|
||||
# Starts the ORLY relay with specified settings, then runs `bun dev:seed` in a
|
||||
# provided Market repository to observe how the app interacts with the relay.
|
||||
#
|
||||
# Usage:
|
||||
# scripts/run-relay-and-seed.sh /path/to/market
|
||||
# MARKET_DIR=/path/to/market scripts/run-relay-and-seed.sh
|
||||
#
|
||||
# Notes:
|
||||
# - This script removes /tmp/plebeian before starting the relay.
|
||||
# - The relay listens on 0.0.0.0:3334
|
||||
# - ORLY_ADMINS is intentionally empty and ACL is set to 'none'.
|
||||
# - Requires: go, bun, curl
|
||||
|
||||
# ---------- Config ----------
|
||||
RELAY_HOST="127.0.0.1"
|
||||
RELAY_PORT="10547"
|
||||
RELAY_DATA_DIR="/tmp/plebeian"
|
||||
LOG_PREFIX="[relay]"
|
||||
WAIT_TIMEOUT="120" # seconds - increased for slow startup
|
||||
|
||||
# ---------- Resolve repo root ----------
|
||||
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
|
||||
cd "${REPO_ROOT}"
|
||||
|
||||
# ---------- Resolve Market directory ----------
|
||||
MARKET_DIR="${1:-${MARKET_DIR:-}}"
|
||||
if [[ -z "${MARKET_DIR}" ]]; then
|
||||
echo "ERROR: Market repository directory not provided. Set MARKET_DIR env or pass as first arg." >&2
|
||||
echo "Example: MARKET_DIR=$HOME/src/market scripts/run-relay-and-seed.sh" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -d "${MARKET_DIR}" ]]; then
|
||||
echo "ERROR: MARKET_DIR does not exist: ${MARKET_DIR}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ---------- Prerequisites ----------
|
||||
command -v go >/dev/null 2>&1 || { echo "ERROR: 'go' not found in PATH" >&2; exit 1; }
|
||||
command -v bun >/dev/null 2>&1 || { echo "ERROR: 'bun' not found in PATH. Install Bun: https://bun.sh" >&2; exit 1; }
|
||||
command -v curl >/dev/null 2>&1 || { echo "ERROR: 'curl' not found in PATH" >&2; exit 1; }
|
||||
|
||||
# ---------- Cleanup handler ----------
|
||||
RELAY_PID=""
|
||||
cleanup() {
|
||||
set +e
|
||||
if [[ -n "${RELAY_PID}" ]]; then
|
||||
echo "${LOG_PREFIX} stopping relay (pid=${RELAY_PID})" >&2
|
||||
kill "${RELAY_PID}" 2>/dev/null || true
|
||||
wait "${RELAY_PID}" 2>/dev/null || true
|
||||
fi
|
||||
}
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
# ---------- Start relay ----------
|
||||
reset || true
|
||||
rm -rf "${RELAY_DATA_DIR}"
|
||||
|
||||
# Run go relay in background with required environment variables
|
||||
(
|
||||
export ORLY_LOG_LEVEL="trace"
|
||||
export ORLY_LISTEN="0.0.0.0"
|
||||
export ORLY_PORT="${RELAY_PORT}"
|
||||
export ORLY_ADMINS=""
|
||||
export ORLY_ACL_MODE="none"
|
||||
export ORLY_DATA_DIR="${RELAY_DATA_DIR}"
|
||||
# Important: run from repo root
|
||||
cd "${REPO_ROOT}"
|
||||
# Prefix relay logs so they are distinguishable
|
||||
stdbuf -oL -eL go run . 2>&1 | sed -u "s/^/${LOG_PREFIX} /"
|
||||
) &
|
||||
RELAY_PID=$!
|
||||
echo "${LOG_PREFIX} started (pid=${RELAY_PID}), waiting for readiness on ${RELAY_HOST}:${RELAY_PORT} …"
|
||||
|
||||
# ---------- Wait for readiness ----------
|
||||
start_ts=$(date +%s)
|
||||
while true; do
|
||||
if curl -fsS "http://${RELAY_HOST}:${RELAY_PORT}/" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
now=$(date +%s)
|
||||
if (( now - start_ts > WAIT_TIMEOUT )); then
|
||||
echo "ERROR: relay did not become ready within ${WAIT_TIMEOUT}s" >&2
|
||||
exit 1
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
echo "${LOG_PREFIX} ready. Running Market seeding…"
|
||||
|
||||
# ---------- Run market seeding ----------
|
||||
(
|
||||
cd "${MARKET_DIR}"
|
||||
# Stream bun output with clear prefix
|
||||
stdbuf -oL -eL bun dev:seed 2>&1 | sed -u 's/^/[market] /'
|
||||
)
|
||||
#
|
||||
## After seeding completes, keep the relay up briefly for inspection
|
||||
#echo "${LOG_PREFIX} seeding finished. Relay is still running for inspection. Press Ctrl+C to stop."
|
||||
## Wait indefinitely until interrupted, to allow observing relay logs/behavior
|
||||
#while true; do sleep 3600; done
|
||||
Reference in New Issue
Block a user