release: bump version to 0.49.0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
linkong
2026-05-08 17:42:27 +08:00
parent bb9183b8a4
commit e1984c7a35
86 changed files with 9165 additions and 412 deletions

View File

@@ -99,6 +99,8 @@ FRONTEND_HEALTH_CHECK_ATTEMPTS="${FRONTEND_HEALTH_CHECK_ATTEMPTS:-10}"
FRONTEND_HEALTH_CHECK_INTERVAL="${FRONTEND_HEALTH_CHECK_INTERVAL:-2}"
PORT_RELEASE_ATTEMPTS="${PORT_RELEASE_ATTEMPTS:-15}"
PORT_RELEASE_INTERVAL="${PORT_RELEASE_INTERVAL:-0.2}"
PORT_PRESTART_RETRIES="${PORT_PRESTART_RETRIES:-3}"
PORT_PRESTART_RETRY_INTERVAL="${PORT_PRESTART_RETRY_INTERVAL:-2}"
DEFAULT_BACKEND_PORT="${DEFAULT_BACKEND_PORT:-8000}"
DEFAULT_FRONTEND_PORT="${DEFAULT_FRONTEND_PORT:-3000}"
DEFAULT_AI_PROVIDER_PORT="${DEFAULT_AI_PROVIDER_PORT:-8010}"
@@ -1167,6 +1169,35 @@ fail_unreleased_port() {
exit 1
}
retry_wait_for_port_release() {
local port="$1"
local service_name="$2"
local attempt=1
local pids=""
while [ "$attempt" -le "$PORT_PRESTART_RETRIES" ]; do
if wait_for_port_release "$port"; then
return 0
fi
pids="$(collect_port_pids "$port" || true)"
if [ -n "$pids" ]; then
log_warn "${service_name}端口 ${port} 仍有监听进程,继续清理 (${attempt}/${PORT_PRESTART_RETRIES})"
for pid in $pids; do
terminate_process_tree KILL "$pid"
done
else
log_warn "${service_name}端口 ${port} 暂未发现监听进程但仍不可绑定,等待释放 (${attempt}/${PORT_PRESTART_RETRIES})"
print_port_listener_details "$port"
fi
sleep "$PORT_PRESTART_RETRY_INTERVAL"
attempt=$((attempt + 1))
done
return 1
}
# Service startup helpers
wait_for_database_health() {
wait_for_container_health "planet_postgres" "$AI_PROVIDER_HEALTH_CHECK_ATTEMPTS" "$DATABASE_RETRY_INTERVAL" "PostgreSQL" &&
@@ -1547,27 +1578,43 @@ kill_port_if_requested() {
return 0
fi
if [ -z "$pids" ]; then
log_warn "端口 ${port} 当前环境未发现监听进程,跳过预清理并交给${service_name}启动流程确认"
print_port_listener_details "$port"
return 0
fi
log_step "发现端口 ${port} 占用,正在终止"
for pid in $pids; do
terminate_process_tree TERM "$pid"
done
if wait_for_port_release "$port" 15 0.2; then
if retry_wait_for_port_release "$port" "$service_name"; then
log_success "端口 ${port} 已释放"
return 0
fi
if [ -z "$(collect_port_pids "$port" || true)" ]; then
log_warn "端口 ${port} 监听进程已清理,继续交给${service_name}启动流程确认"
return 0
fi
log_warn "端口 ${port} 仍被占用,正在强制终止"
pids="$(collect_port_pids "$port" || true)"
for pid in $pids; do
terminate_process_tree KILL "$pid"
done
if wait_for_port_release "$port" 15 0.2; then
if retry_wait_for_port_release "$port" "$service_name"; then
log_success "端口 ${port} 已释放"
return 0
fi
if [ -z "$(collect_port_pids "$port" || true)" ]; then
log_warn "端口 ${port} 强制清理后未发现监听进程,继续交给${service_name}启动流程确认"
return 0
fi
fail_unreleased_port "$port"
}
@@ -1702,8 +1749,9 @@ start_frontend_with_retry() {
while [ "$retry" -le "$FRONTEND_MAX_RETRIES" ]; do
cleanup_frontend_processes "$frontend_port"
if ! wait_for_port_release "$frontend_port"; then
fail_unreleased_port "$frontend_port"
if [ -n "$(collect_port_pids "$frontend_port" || true)" ] &&
! retry_wait_for_port_release "$frontend_port" "前端"; then
log_warn "前端端口 ${frontend_port} 预清理后仍需由 Vite 启动流程确认"
fi
cd "$SCRIPT_DIR/frontend"
: > /tmp/planet_frontend.log