teamshare-bridge 0.22.1 → 0.22.2
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/bridge/daemon-instance.d.ts +80 -0
- package/dist/bridge/daemon-instance.js +273 -0
- package/dist/bridge/daemon-instance.js.map +1 -1
- package/dist/bridge/daemon.js +15 -0
- package/dist/bridge/daemon.js.map +1 -1
- package/dist/bridge/index.js +12 -0
- package/dist/bridge/index.js.map +1 -1
- package/dist/bridge/service.d.ts +50 -28
- package/dist/bridge/service.js +157 -254
- package/dist/bridge/service.js.map +1 -1
- package/dist/bridge/singleton-policy.d.ts +84 -0
- package/dist/bridge/singleton-policy.js +99 -0
- package/dist/bridge/singleton-policy.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type SingletonDecision } from './singleton-policy';
|
|
1
2
|
export interface DaemonInstance {
|
|
2
3
|
pid: number;
|
|
3
4
|
/** The port the daemon actually BOUND (may differ from config.port). */
|
|
@@ -75,3 +76,82 @@ export declare function scanForBridge(): Promise<DaemonInstance | null>;
|
|
|
75
76
|
export declare function resolveDaemonInstance(): Promise<DaemonInstance | null>;
|
|
76
77
|
/** The live daemon, sync only. The watchdog uses this so its tick stays sync. */
|
|
77
78
|
export declare function resolveDaemonInstanceSync(): DaemonInstance | null;
|
|
79
|
+
interface PidInfo {
|
|
80
|
+
/** Process image name (`node`, `GameInputSvc`, …) when queryable. */
|
|
81
|
+
name: string | null;
|
|
82
|
+
/** Full command line when queryable. */
|
|
83
|
+
cmdline: string | null;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Best-effort identity of a pid: image name + command line.
|
|
87
|
+
* null = process gone or unqueryable — never treat as "ours to kill".
|
|
88
|
+
*
|
|
89
|
+
* The NAME half matters: after a reboot Windows recycles pids, so a
|
|
90
|
+
* command-line-only probe returns null for protected processes and a stale
|
|
91
|
+
* pid file would "match" a system service.
|
|
92
|
+
*/
|
|
93
|
+
export declare function pidInfo(pid: number): PidInfo | null;
|
|
94
|
+
/**
|
|
95
|
+
* true = verifiably one of OUR daemons (`node …/index.js daemon`).
|
|
96
|
+
* false = a foreign process (PID reuse) — NEVER kill it.
|
|
97
|
+
* null = unqueryable — callers treat it as "not ours", which fails safe.
|
|
98
|
+
*
|
|
99
|
+
* The watchdog supervisor is excluded by the same test: its argv says
|
|
100
|
+
* `supervisor`, not `daemon`. An upgrade stops daemons, never the watchdog that
|
|
101
|
+
* restarts them.
|
|
102
|
+
*/
|
|
103
|
+
export declare function isOurDaemonProcess(pid: number): boolean | null;
|
|
104
|
+
/**
|
|
105
|
+
* Every pid on this machine that is VERIFIABLY a bridge daemon, ascending.
|
|
106
|
+
*
|
|
107
|
+
* `daemon.lock` is NOT good enough on its own: during the incident that
|
|
108
|
+
* motivated this, the lock held pid 24148 (already dead) while THREE real
|
|
109
|
+
* daemons ran on three different ports. Anything that trusts the lock alone
|
|
110
|
+
* concludes "daemon is not running" and starts another one.
|
|
111
|
+
*
|
|
112
|
+
* Unqueryable processes (access denied) are simply absent; callers treat
|
|
113
|
+
* "cannot enumerate" as "cannot confirm", which is the safe direction.
|
|
114
|
+
*/
|
|
115
|
+
export declare function listOurDaemonPids(options?: {
|
|
116
|
+
exclude?: readonly number[];
|
|
117
|
+
}): number[];
|
|
118
|
+
/** Terminate one verified daemon pid: SIGTERM, then force on Windows. */
|
|
119
|
+
export declare function killDaemonPid(pid: number, timeoutMs?: number): boolean;
|
|
120
|
+
/** Sync `/ping` probe: does a bridge answer `ok:true` on this port? */
|
|
121
|
+
export declare function probePortAnswering(port: number, timeoutMs?: number): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Is a daemon healthy RIGHT NOW, and on which port?
|
|
124
|
+
*
|
|
125
|
+
* The lock/runtime ports are probed first because they are the answer ~always;
|
|
126
|
+
* the full candidate list is the fallback for a daemon whose files were lost.
|
|
127
|
+
* Probing costs one short-lived node process per port, so it runs on the repair
|
|
128
|
+
* path only — never inside the 30s watchdog tick.
|
|
129
|
+
*/
|
|
130
|
+
export declare function findAnsweringDaemonPort(): number | null;
|
|
131
|
+
export interface ReconcileResult {
|
|
132
|
+
decision: SingletonDecision;
|
|
133
|
+
/** Log line for the caller: what happened and what it did about it. */
|
|
134
|
+
message: string;
|
|
135
|
+
/** Pids this call actually terminated. */
|
|
136
|
+
stopped: number[];
|
|
137
|
+
/** Pids it could NOT terminate — the caller must not pretend otherwise. */
|
|
138
|
+
survivors: number[];
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Converge the machine on EXACTLY ONE daemon, then report what the caller
|
|
142
|
+
* should do (`singleton-policy.ts` owns the decision; this owns the effects).
|
|
143
|
+
*
|
|
144
|
+
* Effects, in order: enumerate verified daemon pids → probe for a live
|
|
145
|
+
* `/ping` → decide → terminate the losers → adopt the survivor into
|
|
146
|
+
* `daemon.lock`/`daemon.pid` so the NEXT watchdog tick reads a truthful file
|
|
147
|
+
* instead of spawning again.
|
|
148
|
+
*
|
|
149
|
+
* The adoption is the second half of the fix: without it the watchdog would
|
|
150
|
+
* re-derive the same "no daemon" answer every 30 seconds from a lock that
|
|
151
|
+
* describes a process nobody can find.
|
|
152
|
+
*/
|
|
153
|
+
export declare function reconcileSingleton(options?: {
|
|
154
|
+
exclude?: readonly number[];
|
|
155
|
+
timeoutMs?: number;
|
|
156
|
+
}): ReconcileResult;
|
|
157
|
+
export {};
|
|
@@ -11,6 +11,13 @@ exports.probeBridgePort = probeBridgePort;
|
|
|
11
11
|
exports.scanForBridge = scanForBridge;
|
|
12
12
|
exports.resolveDaemonInstance = resolveDaemonInstance;
|
|
13
13
|
exports.resolveDaemonInstanceSync = resolveDaemonInstanceSync;
|
|
14
|
+
exports.pidInfo = pidInfo;
|
|
15
|
+
exports.isOurDaemonProcess = isOurDaemonProcess;
|
|
16
|
+
exports.listOurDaemonPids = listOurDaemonPids;
|
|
17
|
+
exports.killDaemonPid = killDaemonPid;
|
|
18
|
+
exports.probePortAnswering = probePortAnswering;
|
|
19
|
+
exports.findAnsweringDaemonPort = findAnsweringDaemonPort;
|
|
20
|
+
exports.reconcileSingleton = reconcileSingleton;
|
|
14
21
|
/**
|
|
15
22
|
* daemon-instance: the ONE place that answers "is a bridge daemon already
|
|
16
23
|
* running on this machine, and which process is it?".
|
|
@@ -58,14 +65,31 @@ exports.resolveDaemonInstanceSync = resolveDaemonInstanceSync;
|
|
|
58
65
|
* RECOVERY path for a lost lock file, and it ADOPTS what it finds by writing
|
|
59
66
|
* the lock back, so the synchronous path works from then on.
|
|
60
67
|
*
|
|
68
|
+
* THE LIMIT OF A LOCK, AND WHAT REPLACED IT (2026-10)
|
|
69
|
+
* --------------------------------------------------
|
|
70
|
+
* Everything above still lets two daemons coexist, because a FILE cannot see a
|
|
71
|
+
* process: the lock expires after 24h, it is cleared by a half-written
|
|
72
|
+
* `npm i -g` or a cleanup sweep, and `pidAlive` reads false for a pid we
|
|
73
|
+
* cannot signal. This machine reached three live daemons that way — one
|
|
74
|
+
* serving, two stale — which is what made `npm i -g` fail with EBUSY on a
|
|
75
|
+
* mapped native DLL and left the install unusable.
|
|
76
|
+
*
|
|
77
|
+
* So PROCESS ENUMERATION (`listOurDaemonPids`, command-line verified) is now
|
|
78
|
+
* the authority for "is any daemon running", `daemon.lock` only names WHICH of
|
|
79
|
+
* the live pids is the incumbent, and `reconcileSingleton` enforces "at most
|
|
80
|
+
* one survives" on every start/stop path. The decision itself is the pure
|
|
81
|
+
* `decideSingleton` in `./singleton-policy`.
|
|
82
|
+
*
|
|
61
83
|
* The lock is taken with direct fs calls, never through a PATH shim - the
|
|
62
84
|
* same self-deadlock rule that `git-presence.ts` follows with
|
|
63
85
|
* `envWithoutShims`. An arbiter-mediated singleton would deadlock itself.
|
|
64
86
|
*/
|
|
87
|
+
const node_child_process_1 = require("node:child_process");
|
|
65
88
|
const node_fs_1 = require("node:fs");
|
|
66
89
|
const node_os_1 = require("node:os");
|
|
67
90
|
const node_path_1 = require("node:path");
|
|
68
91
|
const config_1 = require("../lib/config");
|
|
92
|
+
const singleton_policy_1 = require("./singleton-policy");
|
|
69
93
|
const STATE_DIR = (0, node_path_1.join)((0, node_os_1.homedir)(), '.teamshare');
|
|
70
94
|
const LOCK_PATH = (0, node_path_1.join)(STATE_DIR, 'daemon.lock');
|
|
71
95
|
const PID_PATH = (0, node_path_1.join)(STATE_DIR, 'daemon.pid');
|
|
@@ -316,4 +340,253 @@ function atomicWrite(target, contents) {
|
|
|
316
340
|
throw new Error(`could not publish ${target}`);
|
|
317
341
|
}
|
|
318
342
|
}
|
|
343
|
+
/**
|
|
344
|
+
* Best-effort identity of a pid: image name + command line.
|
|
345
|
+
* null = process gone or unqueryable — never treat as "ours to kill".
|
|
346
|
+
*
|
|
347
|
+
* The NAME half matters: after a reboot Windows recycles pids, so a
|
|
348
|
+
* command-line-only probe returns null for protected processes and a stale
|
|
349
|
+
* pid file would "match" a system service.
|
|
350
|
+
*/
|
|
351
|
+
function pidInfo(pid) {
|
|
352
|
+
try {
|
|
353
|
+
if (process.platform === 'win32') {
|
|
354
|
+
const res = (0, node_child_process_1.spawnSync)('powershell.exe', [
|
|
355
|
+
'-NoProfile',
|
|
356
|
+
'-NonInteractive',
|
|
357
|
+
'-Command',
|
|
358
|
+
'$n=(Get-Process -Id ' +
|
|
359
|
+
pid +
|
|
360
|
+
' -ErrorAction SilentlyContinue).ProcessName; ' +
|
|
361
|
+
'$c=(Get-CimInstance Win32_Process -Filter "ProcessId=' +
|
|
362
|
+
pid +
|
|
363
|
+
'" -ErrorAction SilentlyContinue).CommandLine; ' +
|
|
364
|
+
'"$n`t$c"',
|
|
365
|
+
], { stdio: 'pipe', encoding: 'utf8', timeout: 5_000, windowsHide: true });
|
|
366
|
+
const out = (res.stdout ?? '').trim();
|
|
367
|
+
if (!out)
|
|
368
|
+
return null;
|
|
369
|
+
const tab = out.indexOf('\t');
|
|
370
|
+
const name = (tab >= 0 ? out.slice(0, tab) : out).trim();
|
|
371
|
+
const cmdline = tab >= 0 ? out.slice(tab + 1).trim() : '';
|
|
372
|
+
return { name: name || null, cmdline: cmdline || null };
|
|
373
|
+
}
|
|
374
|
+
const res = (0, node_child_process_1.spawnSync)('ps', ['-p', String(pid), '-o', 'args='], {
|
|
375
|
+
stdio: 'pipe',
|
|
376
|
+
encoding: 'utf8',
|
|
377
|
+
timeout: 5_000,
|
|
378
|
+
});
|
|
379
|
+
const out = (res.stdout ?? '').trim();
|
|
380
|
+
if (!out || out === 'args=')
|
|
381
|
+
return null;
|
|
382
|
+
return { name: null, cmdline: out };
|
|
383
|
+
}
|
|
384
|
+
catch {
|
|
385
|
+
return null;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* true = verifiably one of OUR daemons (`node …/index.js daemon`).
|
|
390
|
+
* false = a foreign process (PID reuse) — NEVER kill it.
|
|
391
|
+
* null = unqueryable — callers treat it as "not ours", which fails safe.
|
|
392
|
+
*
|
|
393
|
+
* The watchdog supervisor is excluded by the same test: its argv says
|
|
394
|
+
* `supervisor`, not `daemon`. An upgrade stops daemons, never the watchdog that
|
|
395
|
+
* restarts them.
|
|
396
|
+
*/
|
|
397
|
+
function isOurDaemonProcess(pid) {
|
|
398
|
+
const info = pidInfo(pid);
|
|
399
|
+
if (!info)
|
|
400
|
+
return null;
|
|
401
|
+
if (info.name && !/^node(?:\.exe)?$/i.test(info.name))
|
|
402
|
+
return false;
|
|
403
|
+
if (info.cmdline) {
|
|
404
|
+
return /(index\.js|teamshare)/i.test(info.cmdline) && /\bdaemon\b/i.test(info.cmdline);
|
|
405
|
+
}
|
|
406
|
+
return null;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Every pid on this machine that is VERIFIABLY a bridge daemon, ascending.
|
|
410
|
+
*
|
|
411
|
+
* `daemon.lock` is NOT good enough on its own: during the incident that
|
|
412
|
+
* motivated this, the lock held pid 24148 (already dead) while THREE real
|
|
413
|
+
* daemons ran on three different ports. Anything that trusts the lock alone
|
|
414
|
+
* concludes "daemon is not running" and starts another one.
|
|
415
|
+
*
|
|
416
|
+
* Unqueryable processes (access denied) are simply absent; callers treat
|
|
417
|
+
* "cannot enumerate" as "cannot confirm", which is the safe direction.
|
|
418
|
+
*/
|
|
419
|
+
function listOurDaemonPids(options = {}) {
|
|
420
|
+
const exclude = new Set(options.exclude ?? []);
|
|
421
|
+
const out = (() => {
|
|
422
|
+
if (process.platform === 'win32') {
|
|
423
|
+
const res = (0, node_child_process_1.spawnSync)('powershell.exe', [
|
|
424
|
+
'-NoProfile',
|
|
425
|
+
'-NonInteractive',
|
|
426
|
+
'-Command',
|
|
427
|
+
'Get-CimInstance Win32_Process -Filter "Name=\'node.exe\'" | ' +
|
|
428
|
+
'ForEach-Object { "$($_.ProcessId)`t$($_.CommandLine)" }',
|
|
429
|
+
], { stdio: 'pipe', encoding: 'utf8', timeout: 10_000, windowsHide: true });
|
|
430
|
+
return res.stdout ?? '';
|
|
431
|
+
}
|
|
432
|
+
const res = (0, node_child_process_1.spawnSync)('ps', ['-eo', 'pid=,args='], {
|
|
433
|
+
stdio: 'pipe',
|
|
434
|
+
encoding: 'utf8',
|
|
435
|
+
timeout: 10_000,
|
|
436
|
+
});
|
|
437
|
+
return res.stdout ?? '';
|
|
438
|
+
})();
|
|
439
|
+
const pids = [];
|
|
440
|
+
for (const line of out.split(/\r?\n/)) {
|
|
441
|
+
const tab = line.indexOf('\t');
|
|
442
|
+
const pid = Number(tab >= 0 ? line.slice(0, tab) : line.slice(0, line.indexOf(' ')).trim());
|
|
443
|
+
if (!Number.isInteger(pid) || pid <= 0 || exclude.has(pid))
|
|
444
|
+
continue;
|
|
445
|
+
// Re-use the single identity test so "verified" means the same thing here as
|
|
446
|
+
// everywhere else a pid is about to be killed.
|
|
447
|
+
if (isOurDaemonProcess(pid) === true)
|
|
448
|
+
pids.push(pid);
|
|
449
|
+
}
|
|
450
|
+
return [...new Set(pids)].sort((a, b) => a - b);
|
|
451
|
+
}
|
|
452
|
+
/** Terminate one verified daemon pid: SIGTERM, then force on Windows. */
|
|
453
|
+
function killDaemonPid(pid, timeoutMs = 5000) {
|
|
454
|
+
try {
|
|
455
|
+
process.kill(pid);
|
|
456
|
+
}
|
|
457
|
+
catch {
|
|
458
|
+
/* already gone */
|
|
459
|
+
}
|
|
460
|
+
const deadline = Date.now() + timeoutMs;
|
|
461
|
+
while (pidAlive(pid) && Date.now() < deadline) {
|
|
462
|
+
/* brief wait for a clean exit */
|
|
463
|
+
}
|
|
464
|
+
if (!pidAlive(pid))
|
|
465
|
+
return true;
|
|
466
|
+
if (process.platform === 'win32') {
|
|
467
|
+
// Windows: a detached console node.exe has no window to close politely, so
|
|
468
|
+
// WM_CLOSE is not an option and /F is the only way.
|
|
469
|
+
(0, node_child_process_1.spawnSync)('taskkill', ['/pid', String(pid), '/f'], {
|
|
470
|
+
stdio: 'ignore',
|
|
471
|
+
windowsHide: true,
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
try {
|
|
476
|
+
process.kill(pid, 'SIGKILL');
|
|
477
|
+
}
|
|
478
|
+
catch {
|
|
479
|
+
/* best-effort */
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
const hard = Date.now() + 3000;
|
|
483
|
+
while (pidAlive(pid) && Date.now() < hard) {
|
|
484
|
+
/* wait for the kill to land */
|
|
485
|
+
}
|
|
486
|
+
return !pidAlive(pid);
|
|
487
|
+
}
|
|
488
|
+
/** Sync `/ping` probe: does a bridge answer `ok:true` on this port? */
|
|
489
|
+
function probePortAnswering(port, timeoutMs = 2000) {
|
|
490
|
+
const res = (0, node_child_process_1.spawnSync)(process.execPath, [
|
|
491
|
+
'-e',
|
|
492
|
+
`fetch('http://127.0.0.1:${port}/ping',{signal:AbortSignal.timeout(${timeoutMs})})` +
|
|
493
|
+
'.then(async r=>{try{const b=await r.json();process.exit(b&&b.ok===true?0:1)}catch{process.exit(1)}})' +
|
|
494
|
+
'.catch(()=>process.exit(1))',
|
|
495
|
+
], { stdio: 'ignore', timeout: timeoutMs + 3000, windowsHide: true });
|
|
496
|
+
return res.status === 0;
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* Is a daemon healthy RIGHT NOW, and on which port?
|
|
500
|
+
*
|
|
501
|
+
* The lock/runtime ports are probed first because they are the answer ~always;
|
|
502
|
+
* the full candidate list is the fallback for a daemon whose files were lost.
|
|
503
|
+
* Probing costs one short-lived node process per port, so it runs on the repair
|
|
504
|
+
* path only — never inside the 30s watchdog tick.
|
|
505
|
+
*/
|
|
506
|
+
function findAnsweringDaemonPort() {
|
|
507
|
+
const lock = readLiveDaemonLock();
|
|
508
|
+
const lockPort = lock && lock.port > 0 ? lock.port : null;
|
|
509
|
+
if (lockPort !== null && probePortAnswering(lockPort))
|
|
510
|
+
return lockPort;
|
|
511
|
+
const runtimePort = runtimePortOrNull();
|
|
512
|
+
if (runtimePort !== null && runtimePort !== lockPort && probePortAnswering(runtimePort)) {
|
|
513
|
+
return runtimePort;
|
|
514
|
+
}
|
|
515
|
+
for (const port of config_1.BRIDGE_CANDIDATE_PORTS) {
|
|
516
|
+
if (port === lockPort || port === runtimePort)
|
|
517
|
+
continue;
|
|
518
|
+
if (probePortAnswering(port))
|
|
519
|
+
return port;
|
|
520
|
+
}
|
|
521
|
+
return null;
|
|
522
|
+
}
|
|
523
|
+
function runtimePortOrNull() {
|
|
524
|
+
const port = readRuntimeJson()?.port;
|
|
525
|
+
return typeof port === 'number' && port > 0 ? port : null;
|
|
526
|
+
}
|
|
527
|
+
function readRuntimeJson() {
|
|
528
|
+
try {
|
|
529
|
+
return JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(STATE_DIR, 'runtime.json'), 'utf8'));
|
|
530
|
+
}
|
|
531
|
+
catch {
|
|
532
|
+
return null;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Converge the machine on EXACTLY ONE daemon, then report what the caller
|
|
537
|
+
* should do (`singleton-policy.ts` owns the decision; this owns the effects).
|
|
538
|
+
*
|
|
539
|
+
* Effects, in order: enumerate verified daemon pids → probe for a live
|
|
540
|
+
* `/ping` → decide → terminate the losers → adopt the survivor into
|
|
541
|
+
* `daemon.lock`/`daemon.pid` so the NEXT watchdog tick reads a truthful file
|
|
542
|
+
* instead of spawning again.
|
|
543
|
+
*
|
|
544
|
+
* The adoption is the second half of the fix: without it the watchdog would
|
|
545
|
+
* re-derive the same "no daemon" answer every 30 seconds from a lock that
|
|
546
|
+
* describes a process nobody can find.
|
|
547
|
+
*/
|
|
548
|
+
function reconcileSingleton(options = {}) {
|
|
549
|
+
const exclude = options.exclude ?? [];
|
|
550
|
+
const timeoutMs = options.timeoutMs ?? 5000;
|
|
551
|
+
const live = listOurDaemonPids({ exclude });
|
|
552
|
+
const lock = readLiveDaemonLock();
|
|
553
|
+
const runtime = readRuntimeJson();
|
|
554
|
+
const answeringPort = findAnsweringDaemonPort();
|
|
555
|
+
const decision = (0, singleton_policy_1.decideSingleton)({
|
|
556
|
+
live,
|
|
557
|
+
lockPid: lock && live.includes(lock.pid) ? lock.pid : null,
|
|
558
|
+
runtimePid: typeof runtime?.pid === 'number' && live.includes(runtime.pid) ? runtime.pid : null,
|
|
559
|
+
anyAnswering: answeringPort !== null,
|
|
560
|
+
});
|
|
561
|
+
const stopped = [];
|
|
562
|
+
const survivors = [];
|
|
563
|
+
for (const pid of decision.stop) {
|
|
564
|
+
if (killDaemonPid(pid, timeoutMs))
|
|
565
|
+
stopped.push(pid);
|
|
566
|
+
else
|
|
567
|
+
survivors.push(pid);
|
|
568
|
+
}
|
|
569
|
+
// A survivor we could not kill must keep its claim: clearing the lock here is
|
|
570
|
+
// what let a live daemon become invisible and a second one start on top of it.
|
|
571
|
+
if (decision.action === 'keep' && decision.keep !== null && !survivors.includes(decision.keep)) {
|
|
572
|
+
adoptDaemonLock({
|
|
573
|
+
pid: decision.keep,
|
|
574
|
+
port: answeringPort ?? 0,
|
|
575
|
+
version: lock?.version ?? 'unknown',
|
|
576
|
+
startedAt: lock?.startedAt || new Date().toISOString(),
|
|
577
|
+
source: 'lock',
|
|
578
|
+
});
|
|
579
|
+
}
|
|
580
|
+
const stoppedNote = stopped.length > 0
|
|
581
|
+
? ` stopped ${stopped.join(', ')}.`
|
|
582
|
+
: survivors.length > 0
|
|
583
|
+
? ` COULD NOT STOP ${survivors.join(', ')} - do not treat this machine as clean.`
|
|
584
|
+
: '';
|
|
585
|
+
return {
|
|
586
|
+
decision,
|
|
587
|
+
message: decision.reason + stoppedNote,
|
|
588
|
+
stopped,
|
|
589
|
+
survivors,
|
|
590
|
+
};
|
|
591
|
+
}
|
|
319
592
|
//# sourceMappingURL=daemon-instance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-instance.js","sourceRoot":"","sources":["../../src/bridge/daemon-instance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon-instance.js","sourceRoot":"","sources":["../../src/bridge/daemon-instance.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge/daemon.js
CHANGED
|
@@ -154,6 +154,21 @@ async function runDaemon(portOverride) {
|
|
|
154
154
|
(0, daemon_support_1.log)('use `teamshare-bridge restart` to replace it');
|
|
155
155
|
return;
|
|
156
156
|
}
|
|
157
|
+
// LAST LINE, AND IT MUST NOT BE "CARRY ON" (2026-10). Neither the lock nor
|
|
158
|
+
// the port scan can see a daemon whose files were lost under it: the lock
|
|
159
|
+
// expires after 24h, is cleared by a half-written `npm i -g` or a cleanup
|
|
160
|
+
// sweep, and a pid we cannot signal reads as dead. Asking the OS is the
|
|
161
|
+
// only way to honour "at most one daemon per machine" - and the old
|
|
162
|
+
// "could not claim daemon.lock - continuing" branch is how this machine
|
|
163
|
+
// ended up with three at once, each holding native DLLs that then broke the
|
|
164
|
+
// next `npm i -g` with EBUSY.
|
|
165
|
+
const others = (0, daemon_instance_1.listOurDaemonPids)({ exclude: [process.pid] });
|
|
166
|
+
if (others.length > 0) {
|
|
167
|
+
(0, daemon_support_1.log)(`another TeamShare daemon process is running (pid ${others.join(', ')}) but owns no ` +
|
|
168
|
+
`lock and answers no port - refusing to start a second daemon`);
|
|
169
|
+
(0, daemon_support_1.log)('use `teamshare-bridge restart` to replace it');
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
157
172
|
// Genuinely free, but we could not take the lock (unwritable home?). Carry
|
|
158
173
|
// on: the bind-time occupant check in startProbeServer is the last guard.
|
|
159
174
|
(0, daemon_support_1.log)('could not claim daemon.lock - continuing with port checks only');
|