fix(updates): resolve component update hang and multiple page reload loop
- action.uc: sweep stuck flock 1000 processes before tachyon restart, bound service restart with 25s timeout, and prevent worker lockup - shell/index.ts: add 15-minute general hard timeout for non-Tachyon components to prevent infinite modal spin; allow same-version confirmation for both install and reinstall - package.uc: remove disruptive uhttpd restart from luci_postinst to prevent active socket drops - ui.uc: refresh stale PID state before checking value.running in action_ack so dead jobs can always be acknowledged - initController.ts & sessionJobs.ts: persist handled job IDs across reloads in sessionStorage, eliminate redundant modal popups on page reload, and guard against concurrent reloads with safeReloadPage - renderUpdateProgressModal.ts: record active job before reload and poll readiness with fast health check instead of blind 5s freeze
This commit is contained in:
@@ -1470,7 +1470,16 @@ function action_ack(kind, job_id_value) {
|
||||
return;
|
||||
}
|
||||
|
||||
refresh_pid_job_state(path, "UI action worker exited unexpectedly");
|
||||
let value = read_json_file(path);
|
||||
if (type(value) == "object" && value.running === true) {
|
||||
let pid = as_string(value.pid || "");
|
||||
if (!job_pid_valid(pid) || !pid_running(pid)) {
|
||||
write_stale_action_state(path, "UI action worker is no longer running");
|
||||
value = read_json_file(path);
|
||||
}
|
||||
}
|
||||
|
||||
if (type(value) == "object" && value.running === true) {
|
||||
action_start_response(false, job_id_value, "UI action is still running");
|
||||
exit(1);
|
||||
|
||||
Reference in New Issue
Block a user