@fastybird/smart-panel-backend 1.1.0-alpha.18 → 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.
@@ -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,7 +23,6 @@ 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=""
26
27
  CAPTURED_SERVICE_CGROUP_DIR=""
27
28
  CAPTURED_SERVICE_CGROUP_EVENTS=""
@@ -174,6 +175,44 @@ service_property() {
174
175
  systemctl show "$SERVICE_NAME" --property="$property" --value
175
176
  }
176
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
+
177
216
  process_identity() {
178
217
  local pid="$1"
179
218
  local proc_root="${SERVICE_PROCESS_ROOT:-/proc}"
@@ -438,16 +477,46 @@ wait_for_quiescence() {
438
477
 
439
478
  wait_for_started_service() {
440
479
  local deadline=$((SECONDS + START_TIMEOUT_SECONDS))
441
- local state main_pid
480
+ local previous_main_pid=""
481
+ local previous_start_identity=""
482
+ local before_main_pid before_start_identity main_pid start_identity
442
483
 
443
484
  while [ "$SECONDS" -le "$deadline" ]; do
444
- state="$(service_property ActiveState 2>/dev/null || true)"
445
- main_pid="$(service_property MainPID 2>/dev/null || true)"
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
446
495
 
447
- if [ "$state" = "active" ] && [ "$main_pid" != "0" ] && [ -n "$main_pid" ]; then
448
- if [ -z "$HEALTH_URL" ] || curl -fsS --max-time 5 "$HEALTH_URL" >/dev/null 2>&1; then
449
- return 0
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=""
450
516
  fi
517
+ else
518
+ previous_main_pid=""
519
+ previous_start_identity=""
451
520
  fi
452
521
 
453
522
  sleep 1
@@ -541,6 +610,15 @@ if [ "$INSTALL_TYPE" = "image" ]; then
541
610
  NEW_VERSION_DIR="${IMAGE_BASE_DIR}/v${CLEAN_VERSION}"
542
611
  CURRENT_LINK="${IMAGE_BASE_DIR}/current"
543
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
+
544
622
  if ! acquire_attempt; then
545
623
  update_status "failed" "failed" "An unresolved update attempt already owns the updater"
546
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 waitForAttemptSettlement(initialAttempt) {
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.isAttemptUnresolved(attempt) && this.isAttemptOwnerAlive(attempt)) {
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 new Promise((resolve) => {
103
- setTimeout(resolve, ATTEMPT_RECONCILIATION_POLL_INTERVAL_MS).unref?.();
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
- async reconcileLiveAttempt(attempt) {
131
- const settled = await this.waitForAttemptSettlement(attempt);
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
- await this.reconcileLiveAttempt(attemptBeforeStatus);
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
- await this.reconcileLiveAttempt(attempt);
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
- await this.reconcileLiveAttempt(attempt);
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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"}