@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.
- package/bin/restart.ts +48 -23
- package/bin/restartExitWatchdog.ts +99 -0
- package/bin/run.ts +16 -10
- package/dist/bin/restart.js +39 -21
- package/dist/bin/restart.js.map +1 -1
- package/dist/bin/restartExitWatchdog.d.ts +5 -0
- package/dist/bin/restartExitWatchdog.js +100 -0
- package/dist/bin/restartExitWatchdog.js.map +1 -0
- package/dist/bin/run.d.ts +2 -0
- package/dist/bin/run.js +17 -10
- package/dist/bin/run.js.map +1 -1
- package/dist/resources/DatabaseTransaction.d.ts +18 -1
- package/dist/resources/DatabaseTransaction.js +63 -1
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/LMDBTransaction.d.ts +2 -0
- package/dist/resources/LMDBTransaction.js +7 -1
- package/dist/resources/LMDBTransaction.js.map +1 -1
- package/dist/resources/Resource.js +5 -4
- package/dist/resources/Resource.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +5 -0
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/Table.js +53 -9
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/transaction.js +1 -1
- package/dist/resources/transaction.js.map +1 -1
- package/dist/server/threads/manageThreads.d.ts +1 -0
- package/dist/server/threads/manageThreads.js +20 -3
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/utility/processManagement/processManagement.js +21 -3
- package/dist/utility/processManagement/processManagement.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/resources/DESIGN.md +19 -19
- package/resources/DatabaseTransaction.ts +63 -2
- package/resources/LMDBTransaction.ts +7 -1
- package/resources/Resource.ts +6 -5
- package/resources/ResourceInterface.ts +5 -0
- package/resources/Table.ts +57 -8
- package/resources/transaction.ts +2 -2
- package/server/DESIGN.md +6 -0
- package/server/threads/manageThreads.js +17 -3
- package/studio/web/assets/{Chat-Lgj1d-8d.js → Chat-BNHY84-Z.js} +1 -1
- package/studio/web/assets/{FloatingChat-jLWvR4kI.js → FloatingChat-BbztUci0.js} +3 -3
- package/studio/web/assets/{apiToken-DYI4DqWa.js → apiToken-D0x_S8Wq.js} +1 -1
- package/studio/web/assets/{applications-DCmc9-lk.js → applications-BU83fSEG.js} +1 -1
- package/studio/web/assets/{index-CqbCnqsT.js → index-BQB9R8Ug.js} +4 -4
- package/studio/web/assets/{index.lazy-BNqr3j0f.js → index.lazy-CtErm5q7.js} +3 -3
- package/studio/web/assets/{notifications-Bb2cj14_.js → notifications-B8rDagJM.js} +1 -1
- package/studio/web/assets/{notifications-DVlKonbI.js → notifications-CPwYKDDH.js} +1 -1
- package/studio/web/assets/{profile-BSQWfYfq.js → profile-D0hB1xdm.js} +1 -1
- package/studio/web/assets/{regions-Dk3g8bBF.js → regions-y_jxsBpN.js} +1 -1
- package/studio/web/assets/{setComponentFile-DoITgNLb.js → setComponentFile-DSHbURTI.js} +1 -1
- package/studio/web/assets/{setup-CiEALLa7.js → setup-J5SrM1Kp.js} +1 -1
- package/studio/web/assets/{status-CK9tD-Nd.js → status-IoJkDzlx.js} +1 -1
- package/studio/web/assets/{swagger-ui-react-CxjCDFB-.js → swagger-ui-react-BlgSS25O.js} +1 -1
- package/studio/web/assets/{useEntityRestURL-Cy-0i1UZ.js → useEntityRestURL-qfahJnvr.js} +1 -1
- package/studio/web/index.html +1 -1
- 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 {
|
|
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 {
|
|
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))
|
|
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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
|
|
55
|
-
|
|
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
|
-
|
|
66
|
+
const exit = () => {
|
|
67
|
+
beginProcessShutdown();
|
|
61
68
|
removeHdbPid();
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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 };
|
package/dist/bin/restart.js
CHANGED
|
@@ -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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
//
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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
|
}
|
package/dist/bin/restart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restart.js","sourceRoot":"","sources":["../../bin/restart.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"restart.js","sourceRoot":"","sources":["../../bin/restart.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
88
|
-
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
});
|
|
96
|
-
process.on('SIGQUIT', () => {
|
|
101
|
+
const exit = () => {
|
|
102
|
+
(0, manageThreads_js_1.beginProcessShutdown)();
|
|
97
103
|
removeHdbPid();
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
/**
|
package/dist/bin/run.js.map
CHANGED
|
@@ -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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"}
|