fix: wait for spacetimedb before module publish
This commit is contained in:
@@ -53,6 +53,7 @@ ASYNC_BACKUP_SCRIPT=""
|
||||
ASYNC_BACKUP_ARCHIVE=""
|
||||
ASYNC_BACKUP_MANIFEST=""
|
||||
ASYNC_BACKUP_LOG=""
|
||||
SPACETIME_READY_TIMEOUT_SECONDS="${GENARRATIVE_STDB_PUBLISH_READY_TIMEOUT_SECONDS:-60}"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
@@ -128,6 +129,11 @@ if [[ -n "${RUN_AS_USER}" && ! "${RUN_AS_USER}" =~ ^[A-Za-z_][A-Za-z0-9_-]*$ ]];
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! "${SPACETIME_READY_TIMEOUT_SECONDS}" =~ ^[0-9]+$ || "${SPACETIME_READY_TIMEOUT_SECONDS}" -le 0 ]]; then
|
||||
echo "[production-stdb-publish] GENARRATIVE_STDB_PUBLISH_READY_TIMEOUT_SECONDS 必须是正整数: ${SPACETIME_READY_TIMEOUT_SECONDS}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d "${SOURCE_DIR}" ]]; then
|
||||
echo "[production-stdb-publish] 发布目录不存在: ${SOURCE_DIR}" >&2
|
||||
exit 1
|
||||
@@ -203,6 +209,33 @@ start_async_backup_upload() {
|
||||
ASYNC_BACKUP_STATUS_FILE=""
|
||||
}
|
||||
|
||||
wait_for_spacetime_ready() {
|
||||
if [[ -z "${SERVER_URL}" ]]; then
|
||||
echo "[production-stdb-publish] 使用 server alias=${SERVER_ALIAS},跳过 URL 健康检查等待"
|
||||
return 0
|
||||
fi
|
||||
|
||||
local ping_url="${SERVER_URL%/}/v1/ping"
|
||||
local deadline=$((SECONDS + SPACETIME_READY_TIMEOUT_SECONDS))
|
||||
local last_status=""
|
||||
|
||||
echo "[production-stdb-publish] 等待 SpacetimeDB 就绪: ${ping_url},timeout=${SPACETIME_READY_TIMEOUT_SECONDS}s"
|
||||
while (( SECONDS < deadline )); do
|
||||
# curl 失败时通常表示服务尚未监听;不立即失败,等待冷备份恢复后的 systemd 启动完成。
|
||||
if last_status="$(curl -fsS --max-time 2 "${ping_url}" 2>&1)"; then
|
||||
echo "[production-stdb-publish] SpacetimeDB 已就绪: ${ping_url}"
|
||||
return 0
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
echo "[production-stdb-publish] SpacetimeDB 未在超时内就绪: ${ping_url}" >&2
|
||||
if [[ -n "${last_status}" ]]; then
|
||||
echo "[production-stdb-publish] 最后一次健康检查输出: ${last_status}" >&2
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
"${SCRIPT_DIR}/maintenance-on.sh" "spacetime module publish ${DATABASE}"
|
||||
|
||||
case "${BACKUP_MODE}" in
|
||||
@@ -237,6 +270,8 @@ echo "[production-stdb-publish] 校验 wasm"
|
||||
sha256sum -c spacetime_module.wasm.sha256
|
||||
)
|
||||
|
||||
wait_for_spacetime_ready
|
||||
|
||||
PUBLISH_ARGS=(
|
||||
--root-dir="${SPACETIME_ROOT_DIR}"
|
||||
publish
|
||||
|
||||
Reference in New Issue
Block a user