@fastybird/smart-panel-backend 1.1.0-alpha.17 → 1.1.0-alpha.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/system/scripts/update-worker.sh +223 -18
- package/dist/modules/system/services/update-executor.service.d.ts +11 -2
- package/dist/modules/system/services/update-executor.service.js +96 -10
- package/dist/modules/system/services/update-executor.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -6,6 +6,8 @@ STATUS_FILE="${STATUS_FILE:-/var/lib/smart-panel/update-status.json}"
|
|
|
6
6
|
INSTALL_TYPE="${INSTALL_TYPE:-npm}"
|
|
7
7
|
IMAGE_BASE_DIR="${IMAGE_BASE_DIR:-/opt/smart-panel}"
|
|
8
8
|
DOWNLOAD_URL="${DOWNLOAD_URL:-}"
|
|
9
|
+
HEALTH_URL="${HEALTH_URL:-}"
|
|
10
|
+
HEALTH_EXPECTED_VERSION="${HEALTH_EXPECTED_VERSION:-$VERSION}"
|
|
9
11
|
|
|
10
12
|
# The attempt record and lock live beside the public status file, never inside a versioned image
|
|
11
13
|
# directory. This lets the record survive a backend restart, target-directory cleanup or a
|
|
@@ -21,9 +23,12 @@ CURRENT_PHASE="preparing"
|
|
|
21
23
|
SERVICE_NAME="smart-panel"
|
|
22
24
|
QUIESCENCE_TIMEOUT_SECONDS="${QUIESCENCE_TIMEOUT_SECONDS:-30}"
|
|
23
25
|
START_TIMEOUT_SECONDS="${START_TIMEOUT_SECONDS:-60}"
|
|
24
|
-
HEALTH_URL="${HEALTH_URL:-}"
|
|
25
26
|
CAPTURED_SERVICE_CGROUP_PROCS=""
|
|
27
|
+
CAPTURED_SERVICE_CGROUP_DIR=""
|
|
28
|
+
CAPTURED_SERVICE_CGROUP_EVENTS=""
|
|
26
29
|
CAPTURED_SERVICE_MEMBER_IDENTITIES=""
|
|
30
|
+
CGROUP_MEMBERS=""
|
|
31
|
+
CGROUP_POPULATED=""
|
|
27
32
|
|
|
28
33
|
json_escape() {
|
|
29
34
|
printf '%s' "$1" | sed 's/\\/\\\\/g; s/"/\\"/g; s/[[:cntrl:]]//g'
|
|
@@ -170,6 +175,44 @@ service_property() {
|
|
|
170
175
|
systemctl show "$SERVICE_NAME" --property="$property" --value
|
|
171
176
|
}
|
|
172
177
|
|
|
178
|
+
target_health_is_valid() {
|
|
179
|
+
local payload
|
|
180
|
+
|
|
181
|
+
[ -n "$HEALTH_URL" ] || return 1
|
|
182
|
+
payload="$(curl -fsS --max-time 5 "$HEALTH_URL" 2>/dev/null)" || return 1
|
|
183
|
+
|
|
184
|
+
printf '%s' "$payload" | HEALTH_EXPECTED_VERSION="$HEALTH_EXPECTED_VERSION" node -e '
|
|
185
|
+
let input = "";
|
|
186
|
+
process.stdin.setEncoding("utf8");
|
|
187
|
+
process.stdin.on("data", (chunk) => { input += chunk; });
|
|
188
|
+
process.stdin.on("end", () => {
|
|
189
|
+
try {
|
|
190
|
+
const body = JSON.parse(input);
|
|
191
|
+
const data = body && body.data;
|
|
192
|
+
process.exit(data?.status === "ok" && data.version === process.env.HEALTH_EXPECTED_VERSION ? 0 : 1);
|
|
193
|
+
} catch {
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
'
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
target_process_is_stable() {
|
|
201
|
+
local state main_pid start_identity resolved_target expected_target
|
|
202
|
+
|
|
203
|
+
state="$(service_property ActiveState 2>/dev/null || true)"
|
|
204
|
+
main_pid="$(service_property MainPID 2>/dev/null || true)"
|
|
205
|
+
start_identity="$(service_property ExecMainStartTimestampMonotonic 2>/dev/null || true)"
|
|
206
|
+
resolved_target="$(readlink -f "$CURRENT_LINK" 2>/dev/null || true)"
|
|
207
|
+
expected_target="$(realpath "$NEW_VERSION_DIR" 2>/dev/null || true)"
|
|
208
|
+
|
|
209
|
+
[ "$state" = "active" ] || return 1
|
|
210
|
+
[ "$main_pid" != "0" ] && [ -n "$main_pid" ] || return 1
|
|
211
|
+
[ -n "$start_identity" ] || return 1
|
|
212
|
+
[ -n "$CURRENT_LINK" ] && [ -n "$NEW_VERSION_DIR" ] || return 1
|
|
213
|
+
[ -n "$expected_target" ] && [ "$resolved_target" = "$expected_target" ] || return 1
|
|
214
|
+
}
|
|
215
|
+
|
|
173
216
|
process_identity() {
|
|
174
217
|
local pid="$1"
|
|
175
218
|
local proc_root="${SERVICE_PROCESS_ROOT:-/proc}"
|
|
@@ -203,8 +246,86 @@ process_identity() {
|
|
|
203
246
|
printf '%s|%s\n' "$pid" "$command"
|
|
204
247
|
}
|
|
205
248
|
|
|
249
|
+
read_cgroup_members() {
|
|
250
|
+
local cgroup_procs="$1"
|
|
251
|
+
local contents members
|
|
252
|
+
|
|
253
|
+
CGROUP_MEMBERS=""
|
|
254
|
+
if ! contents="$(cat "$cgroup_procs" 2>/dev/null)"; then
|
|
255
|
+
return 2
|
|
256
|
+
fi
|
|
257
|
+
|
|
258
|
+
if ! members="$(printf '%s\n' "$contents" | awk '
|
|
259
|
+
length($0) > 0 {
|
|
260
|
+
if ($0 !~ /^[0-9]+$/) {
|
|
261
|
+
exit 2
|
|
262
|
+
}
|
|
263
|
+
print
|
|
264
|
+
}
|
|
265
|
+
')"; then
|
|
266
|
+
return 2
|
|
267
|
+
fi
|
|
268
|
+
|
|
269
|
+
CGROUP_MEMBERS="$members"
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
read_cgroup_population() {
|
|
273
|
+
local cgroup_events="$1"
|
|
274
|
+
local contents populated
|
|
275
|
+
|
|
276
|
+
CGROUP_POPULATED=""
|
|
277
|
+
if ! contents="$(cat "$cgroup_events" 2>/dev/null)"; then
|
|
278
|
+
return 2
|
|
279
|
+
fi
|
|
280
|
+
|
|
281
|
+
if ! populated="$(printf '%s\n' "$contents" | awk '
|
|
282
|
+
$1 == "populated" {
|
|
283
|
+
count++
|
|
284
|
+
if (NF != 2 || $2 !~ /^[01]$/) {
|
|
285
|
+
invalid=1
|
|
286
|
+
} else {
|
|
287
|
+
value=$2
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
END {
|
|
291
|
+
if (count != 1 || invalid) {
|
|
292
|
+
exit 2
|
|
293
|
+
}
|
|
294
|
+
print value
|
|
295
|
+
}
|
|
296
|
+
')"; then
|
|
297
|
+
return 2
|
|
298
|
+
fi
|
|
299
|
+
|
|
300
|
+
CGROUP_POPULATED="$populated"
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
probe_cgroup_directory() {
|
|
304
|
+
local cgroup_dir="$1"
|
|
305
|
+
local gnu_stat bsd_stat
|
|
306
|
+
|
|
307
|
+
if gnu_stat="$(LC_ALL=C stat -c '%F' "$cgroup_dir" 2>&1)"; then
|
|
308
|
+
case "$gnu_stat" in
|
|
309
|
+
directory) return 0 ;;
|
|
310
|
+
*) return 2 ;;
|
|
311
|
+
esac
|
|
312
|
+
fi
|
|
313
|
+
|
|
314
|
+
if bsd_stat="$(LC_ALL=C stat -f '%HT' "$cgroup_dir" 2>&1)"; then
|
|
315
|
+
case "$bsd_stat" in
|
|
316
|
+
Directory|directory) return 0 ;;
|
|
317
|
+
*) return 2 ;;
|
|
318
|
+
esac
|
|
319
|
+
fi
|
|
320
|
+
|
|
321
|
+
case "$gnu_stat\n$bsd_stat" in
|
|
322
|
+
*"No such file or directory"*|*"no such file or directory"*) return 1 ;;
|
|
323
|
+
*) return 2 ;;
|
|
324
|
+
esac
|
|
325
|
+
}
|
|
326
|
+
|
|
206
327
|
capture_service_identity() {
|
|
207
|
-
local active_state main_pid control_pid control_group cgroup_procs members pid identity
|
|
328
|
+
local active_state main_pid control_pid control_group cgroup_procs cgroup_dir cgroup_events members pid identity member_status
|
|
208
329
|
|
|
209
330
|
active_state="$(service_property ActiveState 2>/dev/null)" || return 2
|
|
210
331
|
main_pid="$(service_property MainPID 2>/dev/null)" || return 2
|
|
@@ -221,8 +342,18 @@ capture_service_identity() {
|
|
|
221
342
|
[ -n "$control_group" ] || return 2
|
|
222
343
|
|
|
223
344
|
cgroup_procs="${SERVICE_CGROUP_PROCS_FILE:-/sys/fs/cgroup${control_group}/cgroup.procs}"
|
|
345
|
+
cgroup_dir="${SERVICE_CGROUP_DIR:-${cgroup_procs%/cgroup.procs}}"
|
|
346
|
+
cgroup_events="${SERVICE_CGROUP_EVENTS_FILE:-${cgroup_dir}/cgroup.events}"
|
|
347
|
+
if probe_cgroup_directory "$cgroup_dir"; then :; else return 2; fi
|
|
224
348
|
[ -r "$cgroup_procs" ] || return 2
|
|
225
|
-
|
|
349
|
+
[ -r "$cgroup_events" ] || return 2
|
|
350
|
+
if read_cgroup_members "$cgroup_procs"; then
|
|
351
|
+
member_status=0
|
|
352
|
+
else
|
|
353
|
+
member_status=$?
|
|
354
|
+
fi
|
|
355
|
+
[ "$member_status" -eq 0 ] || return "$member_status"
|
|
356
|
+
members="$CGROUP_MEMBERS"
|
|
226
357
|
[ -n "$members" ] || return 1
|
|
227
358
|
|
|
228
359
|
CAPTURED_SERVICE_MEMBER_IDENTITIES=""
|
|
@@ -236,10 +367,12 @@ EOF
|
|
|
236
367
|
|
|
237
368
|
printf '%s\n' "$members" | grep -qx "$main_pid" || return 1
|
|
238
369
|
CAPTURED_SERVICE_CGROUP_PROCS="$cgroup_procs"
|
|
370
|
+
CAPTURED_SERVICE_CGROUP_DIR="$cgroup_dir"
|
|
371
|
+
CAPTURED_SERVICE_CGROUP_EVENTS="$cgroup_events"
|
|
239
372
|
}
|
|
240
373
|
|
|
241
374
|
service_quiesced() {
|
|
242
|
-
local active_state main_pid control_pid
|
|
375
|
+
local active_state main_pid control_pid cgroup_dir_status member_status population_status probe_status pid captured_identity current_identity identity_status
|
|
243
376
|
|
|
244
377
|
[ -n "$CAPTURED_SERVICE_CGROUP_PROCS" ] || return 2
|
|
245
378
|
active_state="$(service_property ActiveState 2>/dev/null)" || return 2
|
|
@@ -275,15 +408,48 @@ $(printf '%b' "$CAPTURED_SERVICE_MEMBER_IDENTITIES")
|
|
|
275
408
|
EOF
|
|
276
409
|
|
|
277
410
|
# The original cgroup may be empty or removed after the service reaches inactive/failed with
|
|
278
|
-
# zero MainPID/ControlPID.
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
if
|
|
282
|
-
|
|
283
|
-
|
|
411
|
+
# zero MainPID/ControlPID. A missing membership file while its directory remains is an
|
|
412
|
+
# unavailable probe, not proof that the subtree is empty.
|
|
413
|
+
if probe_cgroup_directory "$CAPTURED_SERVICE_CGROUP_DIR"; then
|
|
414
|
+
if read_cgroup_members "$CAPTURED_SERVICE_CGROUP_PROCS"; then
|
|
415
|
+
member_status=0
|
|
416
|
+
else
|
|
417
|
+
member_status=$?
|
|
284
418
|
fi
|
|
285
|
-
|
|
286
|
-
|
|
419
|
+
if [ "$member_status" -eq 2 ]; then
|
|
420
|
+
if probe_cgroup_directory "$CAPTURED_SERVICE_CGROUP_DIR"; then
|
|
421
|
+
return 2
|
|
422
|
+
else
|
|
423
|
+
probe_status=$?
|
|
424
|
+
fi
|
|
425
|
+
[ "$probe_status" -eq 1 ] || return 2
|
|
426
|
+
return 0
|
|
427
|
+
fi
|
|
428
|
+
[ "$member_status" -eq 0 ] || return "$member_status"
|
|
429
|
+
[ -z "$CGROUP_MEMBERS" ] || return 1
|
|
430
|
+
|
|
431
|
+
if read_cgroup_population "$CAPTURED_SERVICE_CGROUP_EVENTS"; then
|
|
432
|
+
population_status=0
|
|
433
|
+
else
|
|
434
|
+
population_status=$?
|
|
435
|
+
fi
|
|
436
|
+
if [ "$population_status" -eq 2 ]; then
|
|
437
|
+
if probe_cgroup_directory "$CAPTURED_SERVICE_CGROUP_DIR"; then
|
|
438
|
+
return 2
|
|
439
|
+
else
|
|
440
|
+
probe_status=$?
|
|
441
|
+
fi
|
|
442
|
+
[ "$probe_status" -eq 1 ] || return 2
|
|
443
|
+
return 0
|
|
444
|
+
fi
|
|
445
|
+
[ "$population_status" -eq 0 ] || return "$population_status"
|
|
446
|
+
[ "$CGROUP_POPULATED" = "0" ] || return 1
|
|
447
|
+
else
|
|
448
|
+
cgroup_dir_status=$?
|
|
449
|
+
case "$cgroup_dir_status" in
|
|
450
|
+
1) ;;
|
|
451
|
+
*) return 2 ;;
|
|
452
|
+
esac
|
|
287
453
|
fi
|
|
288
454
|
|
|
289
455
|
return 0
|
|
@@ -311,16 +477,46 @@ wait_for_quiescence() {
|
|
|
311
477
|
|
|
312
478
|
wait_for_started_service() {
|
|
313
479
|
local deadline=$((SECONDS + START_TIMEOUT_SECONDS))
|
|
314
|
-
local
|
|
480
|
+
local previous_main_pid=""
|
|
481
|
+
local previous_start_identity=""
|
|
482
|
+
local before_main_pid before_start_identity main_pid start_identity
|
|
315
483
|
|
|
316
484
|
while [ "$SECONDS" -le "$deadline" ]; do
|
|
317
|
-
|
|
318
|
-
|
|
485
|
+
if target_process_is_stable; then
|
|
486
|
+
before_main_pid="$(service_property MainPID 2>/dev/null || true)"
|
|
487
|
+
before_start_identity="$(service_property ExecMainStartTimestampMonotonic 2>/dev/null || true)"
|
|
488
|
+
|
|
489
|
+
if [ "$before_main_pid" = "0" ] || [ -z "$before_main_pid" ] || [ -z "$before_start_identity" ]; then
|
|
490
|
+
previous_main_pid=""
|
|
491
|
+
previous_start_identity=""
|
|
492
|
+
sleep 1
|
|
493
|
+
continue
|
|
494
|
+
fi
|
|
319
495
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
496
|
+
if target_health_is_valid && target_process_is_stable; then
|
|
497
|
+
main_pid="$(service_property MainPID 2>/dev/null || true)"
|
|
498
|
+
start_identity="$(service_property ExecMainStartTimestampMonotonic 2>/dev/null || true)"
|
|
499
|
+
|
|
500
|
+
if [ "$before_main_pid" = "$main_pid" ] &&
|
|
501
|
+
[ "$before_start_identity" = "$start_identity" ]; then
|
|
502
|
+
if [ "$main_pid" = "$previous_main_pid" ] &&
|
|
503
|
+
[ "$start_identity" = "$previous_start_identity" ]; then
|
|
504
|
+
return 0
|
|
505
|
+
fi
|
|
506
|
+
|
|
507
|
+
previous_main_pid="$main_pid"
|
|
508
|
+
previous_start_identity="$start_identity"
|
|
509
|
+
else
|
|
510
|
+
previous_main_pid=""
|
|
511
|
+
previous_start_identity=""
|
|
512
|
+
fi
|
|
513
|
+
else
|
|
514
|
+
previous_main_pid=""
|
|
515
|
+
previous_start_identity=""
|
|
323
516
|
fi
|
|
517
|
+
else
|
|
518
|
+
previous_main_pid=""
|
|
519
|
+
previous_start_identity=""
|
|
324
520
|
fi
|
|
325
521
|
|
|
326
522
|
sleep 1
|
|
@@ -414,6 +610,15 @@ if [ "$INSTALL_TYPE" = "image" ]; then
|
|
|
414
610
|
NEW_VERSION_DIR="${IMAGE_BASE_DIR}/v${CLEAN_VERSION}"
|
|
415
611
|
CURRENT_LINK="${IMAGE_BASE_DIR}/current"
|
|
416
612
|
|
|
613
|
+
# Image updates must verify the target release through the existing local health route. A
|
|
614
|
+
# missing route would otherwise silently reduce readiness to a PID check and reintroduce the
|
|
615
|
+
# startup/worker circular wait that the updater is designed to avoid.
|
|
616
|
+
if [ -z "$HEALTH_URL" ]; then
|
|
617
|
+
update_status "failed" "failed" "No local health URL configured for image update"
|
|
618
|
+
FINALIZED="true"
|
|
619
|
+
exit 1
|
|
620
|
+
fi
|
|
621
|
+
|
|
417
622
|
if ! acquire_attempt; then
|
|
418
623
|
update_status "failed" "failed" "An unresolved update attempt already owns the updater"
|
|
419
624
|
FINALIZED="true"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OnModuleInit } from '@nestjs/common';
|
|
1
|
+
import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
|
|
2
2
|
import { NotificationsService } from '../../notifications/services/notifications.service';
|
|
3
3
|
import { UpdatePhase, UpdateStatusType } from '../system.constants';
|
|
4
4
|
import { PrivilegedWorkerService } from './privileged-worker.service';
|
|
@@ -11,20 +11,28 @@ export interface UpdateProgressFile {
|
|
|
11
11
|
completedAt?: string;
|
|
12
12
|
error?: string;
|
|
13
13
|
}
|
|
14
|
-
export declare class UpdateExecutorService implements OnModuleInit {
|
|
14
|
+
export declare class UpdateExecutorService implements OnModuleDestroy, OnModuleInit {
|
|
15
15
|
private readonly updateService;
|
|
16
16
|
private readonly privilegedWorker;
|
|
17
17
|
private readonly notifications;
|
|
18
18
|
private readonly logger;
|
|
19
19
|
private progressHighWaterMark;
|
|
20
|
+
private observerGeneration;
|
|
21
|
+
private observerAttemptId;
|
|
22
|
+
private observerTask;
|
|
23
|
+
private readonly observerTimers;
|
|
20
24
|
constructor(updateService: UpdateService, privilegedWorker: PrivilegedWorkerService, notifications: NotificationsService);
|
|
21
25
|
onModuleInit(): Promise<void>;
|
|
26
|
+
onModuleDestroy(): void;
|
|
22
27
|
private readAttempt;
|
|
23
28
|
private isAttemptUnresolved;
|
|
29
|
+
private isObserverCurrent;
|
|
24
30
|
private isAttemptOwnerAlive;
|
|
25
31
|
private readStatusFile;
|
|
32
|
+
private waitForObserverPoll;
|
|
26
33
|
private waitForAttemptSettlement;
|
|
27
34
|
private reconcileCompletedAttempt;
|
|
35
|
+
private observeLiveAttempt;
|
|
28
36
|
private reconcileLiveAttempt;
|
|
29
37
|
private checkPendingUpdateStatus;
|
|
30
38
|
private processPendingStatus;
|
|
@@ -35,4 +43,5 @@ export declare class UpdateExecutorService implements OnModuleInit {
|
|
|
35
43
|
private failUpdate;
|
|
36
44
|
private reportUpdateSucceeded;
|
|
37
45
|
private logHandlerFailure;
|
|
46
|
+
private getLocalHealthUrl;
|
|
38
47
|
}
|
|
@@ -25,6 +25,7 @@ const ATTEMPT_FILE = '/var/lib/smart-panel/update-attempt/attempt.json';
|
|
|
25
25
|
const UPDATE_TIMEOUT_MS = 10 * 60 * 1000;
|
|
26
26
|
const STATUS_POLL_MAX_MS = UPDATE_TIMEOUT_MS + 30_000;
|
|
27
27
|
const ATTEMPT_RECONCILIATION_POLL_INTERVAL_MS = 3_000;
|
|
28
|
+
const LOCAL_HEALTH_PATH = '/api/v1/modules/system/system/health';
|
|
28
29
|
const UPDATE_WORKER_UNIT = 'smart-panel-update';
|
|
29
30
|
const PHASE_PROGRESS = {
|
|
30
31
|
downloading: 20,
|
|
@@ -53,10 +54,24 @@ let UpdateExecutorService = class UpdateExecutorService {
|
|
|
53
54
|
this.notifications = notifications;
|
|
54
55
|
this.logger = (0, logger_1.createExtensionLogger)(system_constants_1.SYSTEM_MODULE_NAME, 'UpdateExecutorService');
|
|
55
56
|
this.progressHighWaterMark = 0;
|
|
57
|
+
this.observerGeneration = 0;
|
|
58
|
+
this.observerAttemptId = null;
|
|
59
|
+
this.observerTask = null;
|
|
60
|
+
this.observerTimers = new Map();
|
|
56
61
|
}
|
|
57
62
|
async onModuleInit() {
|
|
58
63
|
await this.checkPendingUpdateStatus();
|
|
59
64
|
}
|
|
65
|
+
onModuleDestroy() {
|
|
66
|
+
this.observerGeneration += 1;
|
|
67
|
+
for (const [timer, cancel] of this.observerTimers) {
|
|
68
|
+
clearTimeout(timer);
|
|
69
|
+
cancel();
|
|
70
|
+
}
|
|
71
|
+
this.observerTimers.clear();
|
|
72
|
+
this.observerAttemptId = null;
|
|
73
|
+
this.observerTask = null;
|
|
74
|
+
}
|
|
60
75
|
readAttempt() {
|
|
61
76
|
if (!(0, fs_1.existsSync)(ATTEMPT_FILE)) {
|
|
62
77
|
return null;
|
|
@@ -73,6 +88,9 @@ let UpdateExecutorService = class UpdateExecutorService {
|
|
|
73
88
|
isAttemptUnresolved(attempt) {
|
|
74
89
|
return Boolean(attempt && (attempt.state === 'active' || attempt.recoveryRequired === true));
|
|
75
90
|
}
|
|
91
|
+
isObserverCurrent(generation, attemptId) {
|
|
92
|
+
return this.observerGeneration === generation && this.observerAttemptId === attemptId;
|
|
93
|
+
}
|
|
76
94
|
isAttemptOwnerAlive(attempt) {
|
|
77
95
|
if (!Number.isInteger(attempt.ownerPid) || attempt.ownerPid <= 0) {
|
|
78
96
|
return false;
|
|
@@ -91,17 +109,33 @@ let UpdateExecutorService = class UpdateExecutorService {
|
|
|
91
109
|
}
|
|
92
110
|
return JSON.parse((0, fs_1.readFileSync)(STATUS_FILE, 'utf-8'));
|
|
93
111
|
}
|
|
94
|
-
async
|
|
112
|
+
async waitForObserverPoll(generation, attemptId) {
|
|
113
|
+
if (!this.isObserverCurrent(generation, attemptId)) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
await new Promise((resolve) => {
|
|
117
|
+
const timer = setTimeout(() => {
|
|
118
|
+
this.observerTimers.delete(timer);
|
|
119
|
+
resolve();
|
|
120
|
+
}, ATTEMPT_RECONCILIATION_POLL_INTERVAL_MS);
|
|
121
|
+
timer.unref?.();
|
|
122
|
+
this.observerTimers.set(timer, resolve);
|
|
123
|
+
});
|
|
124
|
+
return this.isObserverCurrent(generation, attemptId);
|
|
125
|
+
}
|
|
126
|
+
async waitForAttemptSettlement(initialAttempt, generation) {
|
|
95
127
|
let attempt = initialAttempt;
|
|
96
128
|
let status = null;
|
|
97
129
|
const deadline = Date.now() + STATUS_POLL_MAX_MS;
|
|
98
|
-
while (this.
|
|
130
|
+
while (this.isObserverCurrent(generation, initialAttempt.attemptId) &&
|
|
131
|
+
this.isAttemptUnresolved(attempt) &&
|
|
132
|
+
this.isAttemptOwnerAlive(attempt)) {
|
|
99
133
|
if (Date.now() >= deadline) {
|
|
100
134
|
break;
|
|
101
135
|
}
|
|
102
|
-
await
|
|
103
|
-
|
|
104
|
-
}
|
|
136
|
+
if (!(await this.waitForObserverPoll(generation, initialAttempt.attemptId))) {
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
105
139
|
attempt = this.readAttempt();
|
|
106
140
|
try {
|
|
107
141
|
status = this.readStatusFile();
|
|
@@ -127,8 +161,33 @@ let UpdateExecutorService = class UpdateExecutorService {
|
|
|
127
161
|
(0, fs_1.unlinkSync)(STATUS_FILE);
|
|
128
162
|
}
|
|
129
163
|
}
|
|
130
|
-
|
|
131
|
-
|
|
164
|
+
observeLiveAttempt(attempt) {
|
|
165
|
+
if (this.observerTask !== null) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const generation = ++this.observerGeneration;
|
|
169
|
+
this.observerAttemptId = attempt.attemptId;
|
|
170
|
+
const task = this.reconcileLiveAttempt(attempt, generation).catch((error) => {
|
|
171
|
+
const message = error instanceof Error ? error.message : 'Unknown observer failure';
|
|
172
|
+
this.logger.error(`Failed to observe update attempt ${attempt.attemptId}: ${message}`);
|
|
173
|
+
});
|
|
174
|
+
this.observerTask = task;
|
|
175
|
+
void task.finally(() => {
|
|
176
|
+
if (this.observerGeneration === generation) {
|
|
177
|
+
this.observerAttemptId = null;
|
|
178
|
+
this.observerTask = null;
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
async reconcileLiveAttempt(attempt, generation) {
|
|
183
|
+
const settled = await this.waitForAttemptSettlement(attempt, generation);
|
|
184
|
+
if (!this.isObserverCurrent(generation, attempt.attemptId)) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (settled.attempt && settled.attempt.attemptId !== attempt.attemptId) {
|
|
188
|
+
this.logger.warn(`Update attempt ${attempt.attemptId} was replaced while being observed`);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
132
191
|
if (settled.attempt?.state === 'complete') {
|
|
133
192
|
await this.reconcileCompletedAttempt(settled.attempt, settled.status);
|
|
134
193
|
this.updateService.releaseUpdateLock();
|
|
@@ -157,7 +216,7 @@ let UpdateExecutorService = class UpdateExecutorService {
|
|
|
157
216
|
}
|
|
158
217
|
if (this.isAttemptUnresolved(attemptBeforeStatus)) {
|
|
159
218
|
if (attemptBeforeStatus.state === 'active' && this.isAttemptOwnerAlive(attemptBeforeStatus)) {
|
|
160
|
-
|
|
219
|
+
this.observeLiveAttempt(attemptBeforeStatus);
|
|
161
220
|
return;
|
|
162
221
|
}
|
|
163
222
|
await this.failUpdate(attemptBeforeStatus.error ??
|
|
@@ -176,7 +235,7 @@ let UpdateExecutorService = class UpdateExecutorService {
|
|
|
176
235
|
if (!status) {
|
|
177
236
|
if (this.isAttemptUnresolved(attempt)) {
|
|
178
237
|
if (attempt.state === 'active' && this.isAttemptOwnerAlive(attempt)) {
|
|
179
|
-
|
|
238
|
+
this.observeLiveAttempt(attempt);
|
|
180
239
|
return;
|
|
181
240
|
}
|
|
182
241
|
await this.failUpdate(attempt.error ?? `Update attempt ${attempt.attemptId} requires operator recovery (phase: ${attempt.phase})`);
|
|
@@ -186,7 +245,7 @@ let UpdateExecutorService = class UpdateExecutorService {
|
|
|
186
245
|
if (this.isAttemptUnresolved(attempt)) {
|
|
187
246
|
if (attempt.state === 'active' && this.isAttemptOwnerAlive(attempt)) {
|
|
188
247
|
this.logger.log(`Update attempt ${attempt.attemptId} remains owned by worker ${attempt.ownerPid} (phase: ${attempt.phase}); waiting for durable settlement`);
|
|
189
|
-
|
|
248
|
+
this.observeLiveAttempt(attempt);
|
|
190
249
|
return;
|
|
191
250
|
}
|
|
192
251
|
const recoveryMessage = attempt.error ?? `Update attempt ${attempt.attemptId} requires operator recovery (phase: ${attempt.phase})`;
|
|
@@ -251,6 +310,18 @@ let UpdateExecutorService = class UpdateExecutorService {
|
|
|
251
310
|
throw new Error('An update is already in progress');
|
|
252
311
|
}
|
|
253
312
|
const installType = this.updateService.getInstallType();
|
|
313
|
+
let healthUrl;
|
|
314
|
+
if (installType === 'image') {
|
|
315
|
+
try {
|
|
316
|
+
healthUrl = this.getLocalHealthUrl();
|
|
317
|
+
}
|
|
318
|
+
catch (error) {
|
|
319
|
+
const err = error;
|
|
320
|
+
this.updateService.releaseUpdateLock();
|
|
321
|
+
await this.failUpdate(err.message);
|
|
322
|
+
throw err;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
254
325
|
this.logger.log(`Starting ${installType} update to version ${targetVersion}`);
|
|
255
326
|
let downloadUrl;
|
|
256
327
|
if (installType === 'image') {
|
|
@@ -300,6 +371,10 @@ let UpdateExecutorService = class UpdateExecutorService {
|
|
|
300
371
|
HOME: process.env.HOME ?? '/root',
|
|
301
372
|
PATH: process.env.PATH ?? '/usr/local/bin:/usr/bin:/bin',
|
|
302
373
|
};
|
|
374
|
+
if (healthUrl) {
|
|
375
|
+
envVars.HEALTH_URL = healthUrl;
|
|
376
|
+
envVars.HEALTH_EXPECTED_VERSION = targetVersion;
|
|
377
|
+
}
|
|
303
378
|
if (process.env.FB_DATA_DIR)
|
|
304
379
|
envVars.FB_DATA_DIR = process.env.FB_DATA_DIR;
|
|
305
380
|
if (process.env.FB_DB_PATH)
|
|
@@ -430,6 +505,17 @@ let UpdateExecutorService = class UpdateExecutorService {
|
|
|
430
505
|
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
431
506
|
this.logger.error(`${context}: ${message}`);
|
|
432
507
|
}
|
|
508
|
+
getLocalHealthUrl() {
|
|
509
|
+
const rawPort = process.env.FB_BACKEND_PORT ?? '3000';
|
|
510
|
+
if (!/^\d+$/.test(rawPort)) {
|
|
511
|
+
throw new Error(`Invalid FB_BACKEND_PORT for update health check: ${rawPort}`);
|
|
512
|
+
}
|
|
513
|
+
const port = Number(rawPort);
|
|
514
|
+
if (!Number.isInteger(port) || port < 1 || port > 65_535) {
|
|
515
|
+
throw new Error(`Invalid FB_BACKEND_PORT for update health check: ${rawPort}`);
|
|
516
|
+
}
|
|
517
|
+
return `http://127.0.0.1:${port}${LOCAL_HEALTH_PATH}`;
|
|
518
|
+
}
|
|
433
519
|
};
|
|
434
520
|
exports.UpdateExecutorService = UpdateExecutorService;
|
|
435
521
|
exports.UpdateExecutorService = UpdateExecutorService = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-executor.service.js","sourceRoot":"","sources":["../../../../src/modules/system/services/update-executor.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"update-executor.service.js","sourceRoot":"","sources":["../../../../src/modules/system/services/update-executor.service.ts"],"names":[],"mappings":"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"}
|