@harperfast/harper 5.2.5 → 5.2.6

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.
Files changed (58) hide show
  1. package/bin/restart.ts +48 -23
  2. package/bin/restartExitWatchdog.ts +99 -0
  3. package/bin/run.ts +16 -10
  4. package/dist/bin/restart.js +39 -21
  5. package/dist/bin/restart.js.map +1 -1
  6. package/dist/bin/restartExitWatchdog.d.ts +5 -0
  7. package/dist/bin/restartExitWatchdog.js +100 -0
  8. package/dist/bin/restartExitWatchdog.js.map +1 -0
  9. package/dist/bin/run.d.ts +2 -0
  10. package/dist/bin/run.js +17 -10
  11. package/dist/bin/run.js.map +1 -1
  12. package/dist/resources/DatabaseTransaction.d.ts +18 -1
  13. package/dist/resources/DatabaseTransaction.js +63 -1
  14. package/dist/resources/DatabaseTransaction.js.map +1 -1
  15. package/dist/resources/LMDBTransaction.d.ts +2 -0
  16. package/dist/resources/LMDBTransaction.js +7 -1
  17. package/dist/resources/LMDBTransaction.js.map +1 -1
  18. package/dist/resources/Resource.js +5 -4
  19. package/dist/resources/Resource.js.map +1 -1
  20. package/dist/resources/ResourceInterface.d.ts +5 -0
  21. package/dist/resources/ResourceInterface.js.map +1 -1
  22. package/dist/resources/Table.js +53 -9
  23. package/dist/resources/Table.js.map +1 -1
  24. package/dist/resources/transaction.js +1 -1
  25. package/dist/resources/transaction.js.map +1 -1
  26. package/dist/server/threads/manageThreads.d.ts +1 -0
  27. package/dist/server/threads/manageThreads.js +20 -3
  28. package/dist/server/threads/manageThreads.js.map +1 -1
  29. package/dist/utility/processManagement/processManagement.js +21 -3
  30. package/dist/utility/processManagement/processManagement.js.map +1 -1
  31. package/npm-shrinkwrap.json +2 -2
  32. package/package.json +1 -1
  33. package/resources/DESIGN.md +19 -19
  34. package/resources/DatabaseTransaction.ts +63 -2
  35. package/resources/LMDBTransaction.ts +7 -1
  36. package/resources/Resource.ts +6 -5
  37. package/resources/ResourceInterface.ts +5 -0
  38. package/resources/Table.ts +57 -8
  39. package/resources/transaction.ts +2 -2
  40. package/server/DESIGN.md +6 -0
  41. package/server/threads/manageThreads.js +17 -3
  42. package/studio/web/assets/{Chat-Lgj1d-8d.js → Chat-BNHY84-Z.js} +1 -1
  43. package/studio/web/assets/{FloatingChat-jLWvR4kI.js → FloatingChat-BbztUci0.js} +3 -3
  44. package/studio/web/assets/{apiToken-DYI4DqWa.js → apiToken-D0x_S8Wq.js} +1 -1
  45. package/studio/web/assets/{applications-DCmc9-lk.js → applications-BU83fSEG.js} +1 -1
  46. package/studio/web/assets/{index-CqbCnqsT.js → index-BQB9R8Ug.js} +4 -4
  47. package/studio/web/assets/{index.lazy-BNqr3j0f.js → index.lazy-CtErm5q7.js} +3 -3
  48. package/studio/web/assets/{notifications-Bb2cj14_.js → notifications-B8rDagJM.js} +1 -1
  49. package/studio/web/assets/{notifications-DVlKonbI.js → notifications-CPwYKDDH.js} +1 -1
  50. package/studio/web/assets/{profile-BSQWfYfq.js → profile-D0hB1xdm.js} +1 -1
  51. package/studio/web/assets/{regions-Dk3g8bBF.js → regions-y_jxsBpN.js} +1 -1
  52. package/studio/web/assets/{setComponentFile-DoITgNLb.js → setComponentFile-DSHbURTI.js} +1 -1
  53. package/studio/web/assets/{setup-CiEALLa7.js → setup-J5SrM1Kp.js} +1 -1
  54. package/studio/web/assets/{status-CK9tD-Nd.js → status-IoJkDzlx.js} +1 -1
  55. package/studio/web/assets/{swagger-ui-react-CxjCDFB-.js → swagger-ui-react-BlgSS25O.js} +1 -1
  56. package/studio/web/assets/{useEntityRestURL-Cy-0i1UZ.js → useEntityRestURL-qfahJnvr.js} +1 -1
  57. package/studio/web/index.html +1 -1
  58. package/utility/processManagement/processManagement.js +19 -3
package/bin/restart.ts CHANGED
@@ -6,13 +6,19 @@ import * as hdbTerms from '../utility/hdbTerms.ts';
6
6
  import hdbLogger from '../utility/logging/harper_logger.ts';
7
7
  import * as processMan from '../utility/processManagement/processManagement.js';
8
8
  import { compactOnStart } from './copyDb.ts';
9
- import { restartWorkers, onMessageByType, shutdownWorkersNow } from '../server/threads/manageThreads.js';
9
+ import {
10
+ beginProcessShutdown,
11
+ restartWorkers,
12
+ onMessageByType,
13
+ shutdownWorkersNow,
14
+ } from '../server/threads/manageThreads.js';
10
15
  import { handleHDBError, hdbErrors } from '../utility/errors/hdbError.ts';
11
16
  const { HTTP_STATUS_CODES } = hdbErrors;
12
17
  import * as envMgr from '../utility/environment/environmentManager.ts';
13
18
  import * as path from 'node:path';
14
- import { unlinkSync } from 'node:fs';
19
+ import { rmSync } from 'node:fs';
15
20
  import { getThisNodeName } from '../server/nodeName.ts';
21
+ import { armRestartExitWatchdog } from './restartExitWatchdog.ts';
16
22
  envMgr.initSync();
17
23
 
18
24
  const RESTART_RESPONSE = `Restarting Harper. This may take up to ${hdbTerms.RESTART_TIMEOUT_MS / 1000} seconds.`;
@@ -56,30 +62,49 @@ async function restart(req: any) {
56
62
  if (isMainThread) {
57
63
  hdbLogger.notify(RESTART_RESPONSE);
58
64
 
59
- if (envMgr.get(hdbTerms.CONFIG_PARAMS.STORAGE_COMPACTONSTART)) await compactOnStart();
65
+ if (envMgr.get(hdbTerms.CONFIG_PARAMS.STORAGE_COMPACTONSTART)) {
66
+ hdbLogger.info('Compacting storage before restart; the restart timeout begins after compaction completes');
67
+ await compactOnStart();
68
+ }
60
69
 
61
70
  setTimeout(async () => {
62
- // It seems like you should just be able to start the other process and kill this process and everything should
63
- // be cleaned up, however that doesn't work for some reason; the socket listening fds somehow get transferred to the
64
- // child process if they are not explicitly closed. And when transferred they are orphaned listening, accepting
65
- // connections and hanging. So we need to explicitly close down all the workers and then start the new process
66
- // and shut down.
67
- hdbLogger.debug('Shutdown workers');
68
- await shutdownWorkersNow();
69
- const { closeServers } = require('../server/threads/threadServer.js');
70
- await closeServers();
71
- await processMan.cleanupChildrenProcesses(false);
72
- // remove pid file so it doesn't trip up the launch
73
- unlinkSync(path.join(envMgr.get(hdbTerms.CONFIG_PARAMS.ROOTPATH), hdbTerms.HDB_PID_FILE));
74
- hdbLogger.debug('Starting new process...');
75
- if (process.env.HARPER_EXIT_ON_RESTART) {
76
- // use this to exit the process so that it will be restarted by the
77
- // PM/container/orchestrator.
78
- hdbLogger.warn('Exiting Harper process to trigger a container restart');
79
- process.exit(0);
71
+ try {
72
+ // Latch before the watchdog handshake, not at shutdownWorkersNow() below: a component's
73
+ // debounced requestRestart() landing in between would otherwise reload root components and
74
+ // pre-start an HTTP replacement into a process that is already exiting.
75
+ beginProcessShutdown();
76
+ // Off Linux the watchdog can never arm, and armRestartExitWatchdog() has already warned.
77
+ if (
78
+ process.env.HARPER_EXIT_ON_RESTART &&
79
+ !(await armRestartExitWatchdog(hdbTerms.RESTART_TIMEOUT_MS)) &&
80
+ process.platform === 'linux'
81
+ )
82
+ hdbLogger.error('Restart exit watchdog is unavailable; restart teardown is unbounded');
83
+ // It seems like you should just be able to start the other process and kill this process and everything should
84
+ // be cleaned up, however that doesn't work for some reason; the socket listening fds somehow get transferred to the
85
+ // child process if they are not explicitly closed. And when transferred they are orphaned listening, accepting
86
+ // connections and hanging. So we need to explicitly close down all the workers and then start the new process
87
+ // and shut down.
88
+ hdbLogger.debug('Shutdown workers');
89
+ await shutdownWorkersNow();
90
+ const { closeServers } = require('../server/threads/threadServer.js');
91
+ await closeServers();
92
+ await processMan.cleanupChildrenProcesses(false);
93
+ // remove pid file so it doesn't trip up the launch
94
+ rmSync(path.join(envMgr.get(hdbTerms.CONFIG_PARAMS.ROOTPATH), hdbTerms.HDB_PID_FILE), { force: true });
95
+ hdbLogger.debug('Starting new process...');
96
+ if (process.env.HARPER_EXIT_ON_RESTART) {
97
+ // use this to exit the process so that it will be restarted by the
98
+ // PM/container/orchestrator.
99
+ hdbLogger.warn('Exiting Harper process to trigger a container restart');
100
+ process.exit(0);
101
+ }
102
+ // now launch the new process and exit this process
103
+ await require('./run').launch(true);
104
+ } catch (error) {
105
+ hdbLogger.fatal('Restart teardown failed; exiting Harper', error);
106
+ process.exit(1);
80
107
  }
81
- // now launch the new process and exit this process
82
- require('./run').launch(true);
83
108
  }, 50); // can't await this because it is going to do an exit(), but wait for 50ms so we give the HTTP thread a
84
109
  // chance to return a response
85
110
  } else {
@@ -0,0 +1,99 @@
1
+ import { spawn, type ChildProcess } from 'node:child_process';
2
+
3
+ import hdbLogger from '../utility/logging/harper_logger.ts';
4
+
5
+ // Every way the script below can give up is a silent `exit 0` — an unreadable procfs (a sandbox that
6
+ // does not mount /proc) or a base image without `sleep`. Reporting the watchdog armed in exactly
7
+ // those environments would replace the operator's one signal that teardown is unbounded with a claim
8
+ // that it is not, so arming waits for the script to prove both facilities before it says so.
9
+ export const WATCHDOG_READY_TOKEN = 'harper-restart-exit-watchdog-ready';
10
+ const WATCHDOG_READY_TIMEOUT_MS = 5000;
11
+
12
+ export const WATCHDOG_SCRIPT = `
13
+ parent_pid=$1
14
+ delay_seconds=$2
15
+ [ "$parent_pid" -gt 1 ] || exit 0
16
+ command -v sleep > /dev/null 2>&1 || exit 0
17
+ # Shell PPID variables are snapshots; procfs reflects reparenting after Harper exits.
18
+ read -r _ _ _ current_parent _ < "/proc/$$/stat" || exit 0
19
+ [ "$current_parent" = "$parent_pid" ] || exit 0
20
+ echo "${WATCHDOG_READY_TOKEN}"
21
+ sleep "$delay_seconds" || exit 0
22
+ read -r _ _ _ current_parent _ < "/proc/$$/stat" || exit 0
23
+ [ "$current_parent" = "$parent_pid" ] || exit 0
24
+ echo "harper: restart exit watchdog force-killing pid $parent_pid after $delay_seconds seconds" >&2
25
+ kill -KILL "$parent_pid"
26
+ `;
27
+
28
+ export async function armRestartExitWatchdog(timeoutMs: number) {
29
+ if (process.platform !== 'linux') {
30
+ hdbLogger.warn('Restart exit watchdog is only available on Linux');
31
+ return false;
32
+ }
33
+ if (process.pid <= 1) {
34
+ hdbLogger.warn('Restart exit watchdog requires Harper to run below a container init process');
35
+ return false;
36
+ }
37
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
38
+ hdbLogger.warn('Restart exit watchdog requires a positive finite timeout');
39
+ return false;
40
+ }
41
+
42
+ try {
43
+ const timeoutSeconds = Math.max(1, Math.ceil(timeoutMs / 1000));
44
+ const watchdogPath = ['/usr/bin', '/bin', process.env.PATH].filter(Boolean).join(':');
45
+ const watchdog = spawn(
46
+ '/bin/sh',
47
+ ['-c', WATCHDOG_SCRIPT, 'harper-restart-exit-watchdog', String(process.pid), String(timeoutSeconds)],
48
+ {
49
+ env: { PATH: watchdogPath },
50
+ stdio: ['ignore', 'pipe', 'inherit'],
51
+ windowsHide: true,
52
+ }
53
+ );
54
+ // Before the pid check: a spawn failure (EMFILE on the very wedged process this bounds) emits
55
+ // 'error' asynchronously, and an unhandled one becomes an uncaughtException mid-teardown.
56
+ watchdog.once('error', (error) => hdbLogger.warn('Restart exit watchdog failed', error));
57
+ if (watchdog.pid === undefined) {
58
+ hdbLogger.warn('Restart exit watchdog failed to start');
59
+ return false;
60
+ }
61
+ watchdog.unref();
62
+
63
+ const ready = await waitForWatchdogReady(watchdog);
64
+ // The token is the last thing the script writes to stdout; the force-kill diagnostic goes to the
65
+ // inherited stderr so it survives a wedged Harper event loop.
66
+ watchdog.stdout.destroy();
67
+ if (!ready) {
68
+ watchdog.kill('SIGKILL');
69
+ hdbLogger.warn('Restart exit watchdog could not confirm it was armed');
70
+ return false;
71
+ }
72
+ hdbLogger.info(`Restart exit watchdog armed for ${timeoutSeconds} seconds`);
73
+ return true;
74
+ } catch (error) {
75
+ hdbLogger.warn('Restart exit watchdog failed to start', error);
76
+ return false;
77
+ }
78
+ }
79
+
80
+ export function waitForWatchdogReady(watchdog: ChildProcess, timeoutMs = WATCHDOG_READY_TIMEOUT_MS) {
81
+ return new Promise<boolean>((resolve) => {
82
+ let settled = false;
83
+ const settle = (value: boolean) => {
84
+ if (settled) return;
85
+ settled = true;
86
+ clearTimeout(readyTimer);
87
+ resolve(value);
88
+ };
89
+ const readyTimer = setTimeout(() => settle(false), timeoutMs);
90
+ readyTimer.unref();
91
+ let output = '';
92
+ watchdog.stdout?.on('data', (chunk) => {
93
+ output += chunk;
94
+ if (output.includes(WATCHDOG_READY_TOKEN)) settle(true);
95
+ });
96
+ watchdog.once('error', () => settle(false));
97
+ watchdog.once('exit', () => settle(false));
98
+ });
99
+ }
package/bin/run.ts CHANGED
@@ -23,6 +23,7 @@ import { compactOnStart, migrateOnStart } from './copyDb.ts';
23
23
  import minimist from 'minimist';
24
24
  import * as keys from '../security/keys.ts';
25
25
  import { startHTTPThreads } from '../server/threads/socketRouter.ts';
26
+ import { beginProcessShutdown } from '../server/threads/manageThreads.js';
26
27
  import * as hdbInfoController from '../dataLayer/hdbInfoController.ts';
27
28
  import { isReadOnlyMode } from '../resources/databases.ts';
28
29
  import { getThisNodeName } from '../server/nodeName.ts';
@@ -51,21 +52,25 @@ function addUnhandleRejectionListener() {
51
52
  function addExitListeners() {
52
53
  if (!skipExitListeners) {
53
54
  const removeHdbPid = () => {
54
- fs.removeSync(path.join(env.get(terms.CONFIG_PARAMS.ROOTPATH), terms.HDB_PID_FILE));
55
- process.exit(0);
55
+ try {
56
+ fs.removeSync(path.join(env.get(terms.CONFIG_PARAMS.ROOTPATH), terms.HDB_PID_FILE));
57
+ } catch (error) {
58
+ hdbLogger.error('Unable to remove the Harper pid file during shutdown', error);
59
+ }
56
60
  };
61
+ // Forward defence, not load-bearing today: nothing below can reach a worker start.
57
62
  process.on('exit', () => {
63
+ beginProcessShutdown();
58
64
  removeHdbPid();
59
65
  });
60
- process.on('SIGINT', () => {
66
+ const exit = () => {
67
+ beginProcessShutdown();
61
68
  removeHdbPid();
62
- });
63
- process.on('SIGQUIT', () => {
64
- removeHdbPid();
65
- });
66
- process.on('SIGTERM', () => {
67
- removeHdbPid();
68
- });
69
+ process.exit(0);
70
+ };
71
+ process.on('SIGINT', exit);
72
+ process.on('SIGQUIT', exit);
73
+ process.on('SIGTERM', exit);
69
74
  }
70
75
  }
71
76
 
@@ -262,6 +267,7 @@ async function launch(exit = true) {
262
267
  }
263
268
  }
264
269
 
270
+ export { addExitListeners };
265
271
  export { launch };
266
272
  export { main };
267
273
  export { startupLog };
@@ -51,6 +51,7 @@ const envMgr = __importStar(require("../utility/environment/environmentManager.j
51
51
  const path = __importStar(require("node:path"));
52
52
  const node_fs_1 = require("node:fs");
53
53
  const nodeName_ts_1 = require("../server/nodeName.js");
54
+ const restartExitWatchdog_ts_1 = require("./restartExitWatchdog.js");
54
55
  envMgr.initSync();
55
56
  const RESTART_RESPONSE = `Restarting Harper. This may take up to ${hdbTerms.RESTART_TIMEOUT_MS / 1000} seconds.`;
56
57
  const INVALID_SERVICE_ERR = 'Invalid service';
@@ -86,30 +87,47 @@ async function restart(req) {
86
87
  }
87
88
  if (worker_threads_1.isMainThread) {
88
89
  harper_logger_ts_1.default.notify(RESTART_RESPONSE);
89
- if (envMgr.get(hdbTerms.CONFIG_PARAMS.STORAGE_COMPACTONSTART))
90
+ if (envMgr.get(hdbTerms.CONFIG_PARAMS.STORAGE_COMPACTONSTART)) {
91
+ harper_logger_ts_1.default.info('Compacting storage before restart; the restart timeout begins after compaction completes');
90
92
  await (0, copyDb_ts_1.compactOnStart)();
93
+ }
91
94
  setTimeout(async () => {
92
- // It seems like you should just be able to start the other process and kill this process and everything should
93
- // be cleaned up, however that doesn't work for some reason; the socket listening fds somehow get transferred to the
94
- // child process if they are not explicitly closed. And when transferred they are orphaned listening, accepting
95
- // connections and hanging. So we need to explicitly close down all the workers and then start the new process
96
- // and shut down.
97
- harper_logger_ts_1.default.debug('Shutdown workers');
98
- await (0, manageThreads_js_1.shutdownWorkersNow)();
99
- const { closeServers } = require('../server/threads/threadServer.js');
100
- await closeServers();
101
- await processMan.cleanupChildrenProcesses(false);
102
- // remove pid file so it doesn't trip up the launch
103
- (0, node_fs_1.unlinkSync)(path.join(envMgr.get(hdbTerms.CONFIG_PARAMS.ROOTPATH), hdbTerms.HDB_PID_FILE));
104
- harper_logger_ts_1.default.debug('Starting new process...');
105
- if (process.env.HARPER_EXIT_ON_RESTART) {
106
- // use this to exit the process so that it will be restarted by the
107
- // PM/container/orchestrator.
108
- harper_logger_ts_1.default.warn('Exiting Harper process to trigger a container restart');
109
- process.exit(0);
95
+ try {
96
+ // Latch before the watchdog handshake, not at shutdownWorkersNow() below: a component's
97
+ // debounced requestRestart() landing in between would otherwise reload root components and
98
+ // pre-start an HTTP replacement into a process that is already exiting.
99
+ (0, manageThreads_js_1.beginProcessShutdown)();
100
+ // Off Linux the watchdog can never arm, and armRestartExitWatchdog() has already warned.
101
+ if (process.env.HARPER_EXIT_ON_RESTART &&
102
+ !(await (0, restartExitWatchdog_ts_1.armRestartExitWatchdog)(hdbTerms.RESTART_TIMEOUT_MS)) &&
103
+ process.platform === 'linux')
104
+ harper_logger_ts_1.default.error('Restart exit watchdog is unavailable; restart teardown is unbounded');
105
+ // It seems like you should just be able to start the other process and kill this process and everything should
106
+ // be cleaned up, however that doesn't work for some reason; the socket listening fds somehow get transferred to the
107
+ // child process if they are not explicitly closed. And when transferred they are orphaned listening, accepting
108
+ // connections and hanging. So we need to explicitly close down all the workers and then start the new process
109
+ // and shut down.
110
+ harper_logger_ts_1.default.debug('Shutdown workers');
111
+ await (0, manageThreads_js_1.shutdownWorkersNow)();
112
+ const { closeServers } = require('../server/threads/threadServer.js');
113
+ await closeServers();
114
+ await processMan.cleanupChildrenProcesses(false);
115
+ // remove pid file so it doesn't trip up the launch
116
+ (0, node_fs_1.rmSync)(path.join(envMgr.get(hdbTerms.CONFIG_PARAMS.ROOTPATH), hdbTerms.HDB_PID_FILE), { force: true });
117
+ harper_logger_ts_1.default.debug('Starting new process...');
118
+ if (process.env.HARPER_EXIT_ON_RESTART) {
119
+ // use this to exit the process so that it will be restarted by the
120
+ // PM/container/orchestrator.
121
+ harper_logger_ts_1.default.warn('Exiting Harper process to trigger a container restart');
122
+ process.exit(0);
123
+ }
124
+ // now launch the new process and exit this process
125
+ await require('./run').launch(true);
126
+ }
127
+ catch (error) {
128
+ harper_logger_ts_1.default.fatal('Restart teardown failed; exiting Harper', error);
129
+ process.exit(1);
110
130
  }
111
- // now launch the new process and exit this process
112
- require('./run').launch(true);
113
131
  }, 50); // can't await this because it is going to do an exit(), but wait for 50ms so we give the HTTP thread a
114
132
  // chance to return a response
115
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../bin/restart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../bin/restart.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BJ,0BAAO;AAAE,wCAAc;AA1BhC,wDAAgC;AAChC,mDAA0D;AAC1D,iEAAmD;AACnD,2FAA4D;AAC5D,8FAAgF;AAChF,2CAA6C;AAC7C,yEAK4C;AAC5C,+DAA0E;AAC1E,MAAM,EAAE,iBAAiB,EAAE,GAAG,uBAAS,CAAC;AACxC,qFAAuE;AACvE,gDAAkC;AAClC,qCAAiC;AACjC,uDAAwD;AACxD,qEAAkE;AAClE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAElB,MAAM,gBAAgB,GAAG,0CAA0C,QAAQ,CAAC,kBAAkB,GAAG,IAAI,WAAW,CAAC;AACjH,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAE9C,IAAI,aAAa,CAAC;AAIlB,uGAAuG;AACvG,IAAI,6BAAY,EAAE,CAAC;IAClB,IAAA,kCAAe,EAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACzE,IAAI,OAAO,CAAC,UAAU;YAAE,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;;YACzE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,OAAO,CAAC,GAAQ;IAC9B,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,IAAA,kBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO;IACR,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACtE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED,IAAI,6BAAY,EAAE,CAAC;QAClB,0BAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEnC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC/D,0BAAS,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;YAC3G,MAAM,IAAA,0BAAc,GAAE,CAAC;QACxB,CAAC;QAED,UAAU,CAAC,KAAK,IAAI,EAAE;YACrB,IAAI,CAAC;gBACJ,wFAAwF;gBACxF,2FAA2F;gBAC3F,wEAAwE;gBACxE,IAAA,uCAAoB,GAAE,CAAC;gBACvB,yFAAyF;gBACzF,IACC,OAAO,CAAC,GAAG,CAAC,sBAAsB;oBAClC,CAAC,CAAC,MAAM,IAAA,+CAAsB,EAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;oBAC5D,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAE5B,0BAAS,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;gBACxF,+GAA+G;gBAC/G,oHAAoH;gBACpH,+GAA+G;gBAC/G,8GAA8G;gBAC9G,iBAAiB;gBACjB,0BAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACpC,MAAM,IAAA,qCAAkB,GAAE,CAAC;gBAC3B,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;gBACtE,MAAM,YAAY,EAAE,CAAC;gBACrB,MAAM,UAAU,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;gBACjD,mDAAmD;gBACnD,IAAA,gBAAM,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvG,0BAAS,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;oBACxC,mEAAmE;oBACnE,6BAA6B;oBAC7B,0BAAS,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;oBACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC;gBACD,mDAAmD;gBACnD,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,0BAAS,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;gBAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACF,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,uGAAuG;QAC/G,8BAA8B;IAC/B,CAAC;SAAM,CAAC;QACP,+FAA+F;QAC/F,2BAAU,CAAC,WAAW,CAAC;YACtB,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,OAAO;SACtC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,gBAAgB,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,cAAc,CAAC,GAAQ;IACrC,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IACtB,IAAI,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1D,MAAM,IAAA,4BAAc,EAAC,IAAI,KAAK,EAAE,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACnH,CAAC;IACD,UAAU,CAAC,yBAAyB,EAAE,CAAC;IACvC,IAAI,CAAC,6BAAY,EAAE,CAAC;QACnB,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,MAAc,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,+CAA+C;QACrG,CAAC;QACD,2BAAU,CAAC,WAAW,CAAC;YACtB,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,OAAO;YACtC,UAAU,EAAE,OAAO;SACnB,CAAC,CAAC;QACH,2BAAU,CAAC,GAAG,EAAE,CAAC,CAAC,oDAAoD;QACtE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,2BAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChC,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBACrC,OAAO,EAAE,CAAC;oBACV,2BAAU,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,mBAAmB,CAAC;QACxB,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACpB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,8DAA8D;YACtF,mBAAmB,GAAG,EAAE,CAAC;YACzB,KAAK,IAAI,IAAI,IAAK,MAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,IAAA,6BAAe,GAAE;oBAAE,SAAS;gBAC9C,8BAA8B;gBAC9B,IAAI,MAAM,CAAC;gBACX,IAAI,CAAC;oBACJ,CAAC,EAAE,MAAM,EAAE,GAAG,MAAO,MAAc,CAAC,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,wFAAwF;oBACxF,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBACpE,SAAS;gBACV,CAAC;gBACD,sEAAsE;gBACtE,mBAAmB,CAAC,IAAI,CACvB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACrC,MAAM,cAAc,GAAG,GAAG,CAAC;oBAC3B,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,aAAa;oBACrC,IAAI,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;wBACrC,IAAI,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;4BACxB,aAAa,CAAC,QAAQ,CAAC,CAAC;4BACxB,IAAI,KAAK,GAAQ,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;4BAC5E,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,CAAC,+BAA+B;4BACvE,MAAM,CAAC,KAAK,CAAC,CAAC;wBACf,CAAC;wBACD,IAAI,QAAQ,GAAG,MAAO,MAAc,CAAC,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE;4BACjF,SAAS,EAAE,SAAS;4BACpB,EAAE,EAAE,MAAM;yBACV,CAAC,CAAC;wBACH,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBACtC,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;4BACrC,aAAa,CAAC,QAAQ,CAAC,CAAC;4BACxB,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;wBAC1D,CAAC;wBACD,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;4BAClC,aAAa,CAAC,QAAQ,CAAC,CAAC;4BACxB,IAAI,KAAK,GAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;4BAC9C,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,CAAC,+BAA+B;4BACvE,MAAM,CAAC,KAAK,CAAC,CAAC;wBACf,CAAC;oBACF,CAAC,EAAE,cAAc,CAAC,CAAC;gBACpB,CAAC,CAAC,CACF,CAAC;YACH,CAAC;YACD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO;IACR,CAAC;IAED,IAAI,MAAM,CAAC;IACX,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,kBAAkB,CAAC;QACxB,KAAK,kBAAkB,CAAC;QACxB,KAAK,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAC5C,KAAK,QAAQ,CAAC,oBAAoB,CAAC,YAAY,CAAC;QAChD,KAAK,QAAQ,CAAC,oBAAoB,CAAC,IAAI;YACtC,IAAI,aAAa;gBAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACzD,0BAAS,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;YAE5C,IAAI,aAAa,EAAE,CAAC;gBACnB,MAAM,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAA,iCAAc,EAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM;QACP;YACC,MAAM,GAAG,yBAAyB,OAAO,EAAE,CAAC;YAC5C,MAAM;IACR,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACZ,0BAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,IAAI,aAAa;YAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,kBAAkB;QAAE,OAAO,GAAG,kBAAkB,CAAC;IACjE,OAAO,cAAc,OAAO,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type ChildProcess } from 'node:child_process';
2
+ export declare const WATCHDOG_READY_TOKEN = "harper-restart-exit-watchdog-ready";
3
+ export declare const WATCHDOG_SCRIPT = "\nparent_pid=$1\ndelay_seconds=$2\n[ \"$parent_pid\" -gt 1 ] || exit 0\ncommand -v sleep > /dev/null 2>&1 || exit 0\n# Shell PPID variables are snapshots; procfs reflects reparenting after Harper exits.\nread -r _ _ _ current_parent _ < \"/proc/$$/stat\" || exit 0\n[ \"$current_parent\" = \"$parent_pid\" ] || exit 0\necho \"harper-restart-exit-watchdog-ready\"\nsleep \"$delay_seconds\" || exit 0\nread -r _ _ _ current_parent _ < \"/proc/$$/stat\" || exit 0\n[ \"$current_parent\" = \"$parent_pid\" ] || exit 0\necho \"harper: restart exit watchdog force-killing pid $parent_pid after $delay_seconds seconds\" >&2\nkill -KILL \"$parent_pid\"\n";
4
+ export declare function armRestartExitWatchdog(timeoutMs: number): Promise<boolean>;
5
+ export declare function waitForWatchdogReady(watchdog: ChildProcess, timeoutMs?: number): Promise<boolean>;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WATCHDOG_SCRIPT = exports.WATCHDOG_READY_TOKEN = void 0;
7
+ exports.armRestartExitWatchdog = armRestartExitWatchdog;
8
+ exports.waitForWatchdogReady = waitForWatchdogReady;
9
+ const node_child_process_1 = require("node:child_process");
10
+ const harper_logger_ts_1 = __importDefault(require("../utility/logging/harper_logger.js"));
11
+ // Every way the script below can give up is a silent `exit 0` — an unreadable procfs (a sandbox that
12
+ // does not mount /proc) or a base image without `sleep`. Reporting the watchdog armed in exactly
13
+ // those environments would replace the operator's one signal that teardown is unbounded with a claim
14
+ // that it is not, so arming waits for the script to prove both facilities before it says so.
15
+ exports.WATCHDOG_READY_TOKEN = 'harper-restart-exit-watchdog-ready';
16
+ const WATCHDOG_READY_TIMEOUT_MS = 5000;
17
+ exports.WATCHDOG_SCRIPT = `
18
+ parent_pid=$1
19
+ delay_seconds=$2
20
+ [ "$parent_pid" -gt 1 ] || exit 0
21
+ command -v sleep > /dev/null 2>&1 || exit 0
22
+ # Shell PPID variables are snapshots; procfs reflects reparenting after Harper exits.
23
+ read -r _ _ _ current_parent _ < "/proc/$$/stat" || exit 0
24
+ [ "$current_parent" = "$parent_pid" ] || exit 0
25
+ echo "${exports.WATCHDOG_READY_TOKEN}"
26
+ sleep "$delay_seconds" || exit 0
27
+ read -r _ _ _ current_parent _ < "/proc/$$/stat" || exit 0
28
+ [ "$current_parent" = "$parent_pid" ] || exit 0
29
+ echo "harper: restart exit watchdog force-killing pid $parent_pid after $delay_seconds seconds" >&2
30
+ kill -KILL "$parent_pid"
31
+ `;
32
+ async function armRestartExitWatchdog(timeoutMs) {
33
+ if (process.platform !== 'linux') {
34
+ harper_logger_ts_1.default.warn('Restart exit watchdog is only available on Linux');
35
+ return false;
36
+ }
37
+ if (process.pid <= 1) {
38
+ harper_logger_ts_1.default.warn('Restart exit watchdog requires Harper to run below a container init process');
39
+ return false;
40
+ }
41
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
42
+ harper_logger_ts_1.default.warn('Restart exit watchdog requires a positive finite timeout');
43
+ return false;
44
+ }
45
+ try {
46
+ const timeoutSeconds = Math.max(1, Math.ceil(timeoutMs / 1000));
47
+ const watchdogPath = ['/usr/bin', '/bin', process.env.PATH].filter(Boolean).join(':');
48
+ const watchdog = (0, node_child_process_1.spawn)('/bin/sh', ['-c', exports.WATCHDOG_SCRIPT, 'harper-restart-exit-watchdog', String(process.pid), String(timeoutSeconds)], {
49
+ env: { PATH: watchdogPath },
50
+ stdio: ['ignore', 'pipe', 'inherit'],
51
+ windowsHide: true,
52
+ });
53
+ // Before the pid check: a spawn failure (EMFILE on the very wedged process this bounds) emits
54
+ // 'error' asynchronously, and an unhandled one becomes an uncaughtException mid-teardown.
55
+ watchdog.once('error', (error) => harper_logger_ts_1.default.warn('Restart exit watchdog failed', error));
56
+ if (watchdog.pid === undefined) {
57
+ harper_logger_ts_1.default.warn('Restart exit watchdog failed to start');
58
+ return false;
59
+ }
60
+ watchdog.unref();
61
+ const ready = await waitForWatchdogReady(watchdog);
62
+ // The token is the last thing the script writes to stdout; the force-kill diagnostic goes to the
63
+ // inherited stderr so it survives a wedged Harper event loop.
64
+ watchdog.stdout.destroy();
65
+ if (!ready) {
66
+ watchdog.kill('SIGKILL');
67
+ harper_logger_ts_1.default.warn('Restart exit watchdog could not confirm it was armed');
68
+ return false;
69
+ }
70
+ harper_logger_ts_1.default.info(`Restart exit watchdog armed for ${timeoutSeconds} seconds`);
71
+ return true;
72
+ }
73
+ catch (error) {
74
+ harper_logger_ts_1.default.warn('Restart exit watchdog failed to start', error);
75
+ return false;
76
+ }
77
+ }
78
+ function waitForWatchdogReady(watchdog, timeoutMs = WATCHDOG_READY_TIMEOUT_MS) {
79
+ return new Promise((resolve) => {
80
+ let settled = false;
81
+ const settle = (value) => {
82
+ if (settled)
83
+ return;
84
+ settled = true;
85
+ clearTimeout(readyTimer);
86
+ resolve(value);
87
+ };
88
+ const readyTimer = setTimeout(() => settle(false), timeoutMs);
89
+ readyTimer.unref();
90
+ let output = '';
91
+ watchdog.stdout?.on('data', (chunk) => {
92
+ output += chunk;
93
+ if (output.includes(exports.WATCHDOG_READY_TOKEN))
94
+ settle(true);
95
+ });
96
+ watchdog.once('error', () => settle(false));
97
+ watchdog.once('exit', () => settle(false));
98
+ });
99
+ }
100
+ //# sourceMappingURL=restartExitWatchdog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restartExitWatchdog.js","sourceRoot":"","sources":["../../bin/restartExitWatchdog.ts"],"names":[],"mappings":"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"}
package/dist/bin/run.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import './restart.ts';
2
+ declare function addExitListeners(): void;
2
3
  /**
3
4
  * Starts Harper DB threads
4
5
  * If the hdbBootProps file is not found, it is assumed an install needs to be performed.
@@ -14,6 +15,7 @@ declare function main(calledByInstall?: boolean): Promise<void>;
14
15
  * @returns {Promise<void>} // ha ha, it doesn't!
15
16
  */
16
17
  declare function launch(exit?: boolean): Promise<void>;
18
+ export { addExitListeners };
17
19
  export { launch };
18
20
  export { main };
19
21
  export { startupLog };
package/dist/bin/run.js CHANGED
@@ -36,6 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.addExitListeners = addExitListeners;
39
40
  exports.launch = launch;
40
41
  exports.main = main;
41
42
  exports.startupLog = startupLog;
@@ -61,6 +62,7 @@ const copyDb_ts_1 = require("./copyDb.js");
61
62
  const minimist_1 = __importDefault(require("minimist"));
62
63
  const keys = __importStar(require("../security/keys.js"));
63
64
  const socketRouter_ts_1 = require("../server/threads/socketRouter.js");
65
+ const manageThreads_js_1 = require("../server/threads/manageThreads.js");
64
66
  const hdbInfoController = __importStar(require("../dataLayer/hdbInfoController.js"));
65
67
  const databases_ts_1 = require("../resources/databases.js");
66
68
  const nodeName_ts_1 = require("../server/nodeName.js");
@@ -84,21 +86,26 @@ function addUnhandleRejectionListener() {
84
86
  function addExitListeners() {
85
87
  if (!skipExitListeners) {
86
88
  const removeHdbPid = () => {
87
- fs.removeSync(path.join(env.get(terms.CONFIG_PARAMS.ROOTPATH), terms.HDB_PID_FILE));
88
- process.exit(0);
89
+ try {
90
+ fs.removeSync(path.join(env.get(terms.CONFIG_PARAMS.ROOTPATH), terms.HDB_PID_FILE));
91
+ }
92
+ catch (error) {
93
+ harper_logger_ts_1.default.error('Unable to remove the Harper pid file during shutdown', error);
94
+ }
89
95
  };
96
+ // Forward defence, not load-bearing today: nothing below can reach a worker start.
90
97
  process.on('exit', () => {
98
+ (0, manageThreads_js_1.beginProcessShutdown)();
91
99
  removeHdbPid();
92
100
  });
93
- process.on('SIGINT', () => {
94
- removeHdbPid();
95
- });
96
- process.on('SIGQUIT', () => {
101
+ const exit = () => {
102
+ (0, manageThreads_js_1.beginProcessShutdown)();
97
103
  removeHdbPid();
98
- });
99
- process.on('SIGTERM', () => {
100
- removeHdbPid();
101
- });
104
+ process.exit(0);
105
+ };
106
+ process.on('SIGINT', exit);
107
+ process.on('SIGQUIT', exit);
108
+ process.on('SIGTERM', exit);
102
109
  }
103
110
  }
104
111
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../bin/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../bin/run.ts"],"names":[],"mappings":"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"}