@lob-ox/core-darwin-x64 0.0.11 → 0.0.13
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/core.cjs +203 -781
- package/package.json +1 -1
package/core.cjs
CHANGED
|
@@ -1471,7 +1471,7 @@ var require_version = __commonJS({
|
|
|
1471
1471
|
var fs2 = require("node:fs");
|
|
1472
1472
|
var path2 = require("node:path");
|
|
1473
1473
|
function guardVersion() {
|
|
1474
|
-
if (true) return String("0.0.
|
|
1474
|
+
if (true) return String("0.0.13");
|
|
1475
1475
|
try {
|
|
1476
1476
|
return JSON.parse(fs2.readFileSync(path2.join(__dirname, "..", "..", "package.json"), "utf8")).version || "unknown";
|
|
1477
1477
|
} catch {
|
|
@@ -1824,10 +1824,7 @@ var require_phase = __commonJS({
|
|
|
1824
1824
|
STARTING: "starting",
|
|
1825
1825
|
RUNNING: "running",
|
|
1826
1826
|
STOPPING: "draining",
|
|
1827
|
-
FAILED: "failed"
|
|
1828
|
-
OBSERVED: "stopped",
|
|
1829
|
-
RESTARTING: "starting",
|
|
1830
|
-
BACKOFF: "failed"
|
|
1827
|
+
FAILED: "failed"
|
|
1831
1828
|
};
|
|
1832
1829
|
function entryToLegacyPhase(ph) {
|
|
1833
1830
|
return ENTRY_TO_LEGACY[ph] || "STOPPED";
|
|
@@ -1865,10 +1862,7 @@ var require_fields = __commonJS({
|
|
|
1865
1862
|
}
|
|
1866
1863
|
function phase() {
|
|
1867
1864
|
const e = record.storeOf();
|
|
1868
|
-
|
|
1869
|
-
const upper = entryToLegacyPhase(e.phase || "stopped");
|
|
1870
|
-
if (upper === "STOPPED" && p && p.observedOnly && p.adopted) return "OBSERVED";
|
|
1871
|
-
return upper;
|
|
1865
|
+
return entryToLegacyPhase(e.phase || "stopped");
|
|
1872
1866
|
}
|
|
1873
1867
|
function setPhase(upper) {
|
|
1874
1868
|
const e = record.storeOf();
|
|
@@ -2000,7 +1994,6 @@ var require_store = __commonJS({
|
|
|
2000
1994
|
const record = g.record;
|
|
2001
1995
|
const fields = g.fields;
|
|
2002
1996
|
const mainStore = g.mainStore;
|
|
2003
|
-
const upgradeHold = g.upgradeHold;
|
|
2004
1997
|
const config = () => typeof g.getConfig === "function" ? g.getConfig() || {} : {};
|
|
2005
1998
|
const logger = () => typeof g.getLogger === "function" ? g.getLogger() : null;
|
|
2006
1999
|
const events = () => typeof g.getEvents === "function" ? g.getEvents() : null;
|
|
@@ -2046,7 +2039,6 @@ var require_store = __commonJS({
|
|
|
2046
2039
|
if (typeof raw.startupFailCount === "number") record.fieldOf("startupFailCount", raw.startupFailCount, true);
|
|
2047
2040
|
if (typeof raw.lastFailure === "string" || raw.lastFailure === null) record.procFieldOf("lastFailure", raw.lastFailure, true);
|
|
2048
2041
|
if (typeof raw.lastRestartAt === "string" || raw.lastRestartAt === null) record.procFieldOf("lastRestartAt", raw.lastRestartAt, true);
|
|
2049
|
-
if (raw.upgradeHold === true) upgradeHold.enter();
|
|
2050
2042
|
if (raw.shellHalted === true && typeof g.setShellHalted === "function") g.setShellHalted(true);
|
|
2051
2043
|
} catch (e) {
|
|
2052
2044
|
const l = logger();
|
|
@@ -2126,11 +2118,11 @@ var require_desired = __commonJS({
|
|
|
2126
2118
|
if (it) it.register("start");
|
|
2127
2119
|
setCrashHalted(false);
|
|
2128
2120
|
}
|
|
2129
|
-
if (v === "running" && fields.
|
|
2121
|
+
if (v === "running" && fields.observedOnly() && fields.accessors.adoptedPid.get() !== null) {
|
|
2130
2122
|
fields.setObservedOnly(false);
|
|
2131
2123
|
fields.setPhase("STOPPED");
|
|
2132
2124
|
}
|
|
2133
|
-
if (v === "stopped" && fields.
|
|
2125
|
+
if (v === "stopped" && fields.observedOnly() && fields.accessors.adoptedPid.get() !== null) {
|
|
2134
2126
|
stopProcess("desired_stopped");
|
|
2135
2127
|
}
|
|
2136
2128
|
if (fields.desired() !== v) {
|
|
@@ -2206,203 +2198,6 @@ var require_desired = __commonJS({
|
|
|
2206
2198
|
}
|
|
2207
2199
|
});
|
|
2208
2200
|
|
|
2209
|
-
// src/app/main/decide.js
|
|
2210
|
-
var require_decide = __commonJS({
|
|
2211
|
-
"src/app/main/decide.js"(exports2, module2) {
|
|
2212
|
-
"use strict";
|
|
2213
|
-
var pidlook = require_pidlookup();
|
|
2214
|
-
function startDeadlinePassed(deadline, now) {
|
|
2215
|
-
return !!(deadline && now > deadline);
|
|
2216
|
-
}
|
|
2217
|
-
function childAlive(child) {
|
|
2218
|
-
return !!(child && child.exitCode === null && child.signalCode === null);
|
|
2219
|
-
}
|
|
2220
|
-
function adoptedAlive(adoptPid) {
|
|
2221
|
-
return adoptPid !== null && adoptPid !== void 0 && pidlook.isAlive(adoptPid);
|
|
2222
|
-
}
|
|
2223
|
-
function targetAlive(child, adoptPid) {
|
|
2224
|
-
return childAlive(child) || adoptedAlive(adoptPid);
|
|
2225
|
-
}
|
|
2226
|
-
var DEPS = /* @__PURE__ */ new WeakMap();
|
|
2227
|
-
function depsOf(host) {
|
|
2228
|
-
let d = DEPS.get(host);
|
|
2229
|
-
if (!d) {
|
|
2230
|
-
d = {
|
|
2231
|
-
state() {
|
|
2232
|
-
return host.state;
|
|
2233
|
-
},
|
|
2234
|
-
session() {
|
|
2235
|
-
return host.session;
|
|
2236
|
-
},
|
|
2237
|
-
upgradeHold() {
|
|
2238
|
-
return host._upgradeHold;
|
|
2239
|
-
},
|
|
2240
|
-
manualRestart() {
|
|
2241
|
-
return host.manualRestart;
|
|
2242
|
-
},
|
|
2243
|
-
crashHalted() {
|
|
2244
|
-
return host._crashHalted;
|
|
2245
|
-
},
|
|
2246
|
-
portUp() {
|
|
2247
|
-
return host._lastPortUp === true;
|
|
2248
|
-
},
|
|
2249
|
-
mChild() {
|
|
2250
|
-
return host._mChild();
|
|
2251
|
-
},
|
|
2252
|
-
mAdoptPid() {
|
|
2253
|
-
return host._mAdoptPid();
|
|
2254
|
-
},
|
|
2255
|
-
mAdopted() {
|
|
2256
|
-
return host._mAdopted();
|
|
2257
|
-
},
|
|
2258
|
-
mObservedOnly() {
|
|
2259
|
-
return host._mObservedOnly();
|
|
2260
|
-
},
|
|
2261
|
-
mSpawnBlockedUntil() {
|
|
2262
|
-
return host._mSpawnBlockedUntil();
|
|
2263
|
-
},
|
|
2264
|
-
mStartDeadline() {
|
|
2265
|
-
return host._mStartDeadline();
|
|
2266
|
-
},
|
|
2267
|
-
mRestartAt() {
|
|
2268
|
-
return host._mRestartAt();
|
|
2269
|
-
},
|
|
2270
|
-
mStartupFailWindowStart() {
|
|
2271
|
-
return host._mStartupFailWindowStart();
|
|
2272
|
-
},
|
|
2273
|
-
mStartupFailCount() {
|
|
2274
|
-
return host._mStartupFailCount();
|
|
2275
|
-
}
|
|
2276
|
-
};
|
|
2277
|
-
DEPS.set(host, d);
|
|
2278
|
-
}
|
|
2279
|
-
return d;
|
|
2280
|
-
}
|
|
2281
|
-
module2.exports = {
|
|
2282
|
-
methods: {
|
|
2283
|
-
_mainStateSnapshot() {
|
|
2284
|
-
const d = depsOf(this);
|
|
2285
|
-
const now = Date.now();
|
|
2286
|
-
const phase = d.state().phase();
|
|
2287
|
-
const startDeadline = d.mStartDeadline();
|
|
2288
|
-
return {
|
|
2289
|
-
phase,
|
|
2290
|
-
desired: d.state().desired(),
|
|
2291
|
-
portUp: d.portUp() === true,
|
|
2292
|
-
childAlive: childAlive(d.mChild()),
|
|
2293
|
-
adoptedAlive: adoptedAlive(d.mAdoptPid()),
|
|
2294
|
-
adoptedPidSet: d.mAdoptPid() !== null,
|
|
2295
|
-
childPresent: d.mChild() !== null,
|
|
2296
|
-
adopted: d.mAdopted() === true,
|
|
2297
|
-
observedOnly: d.mObservedOnly() === true,
|
|
2298
|
-
upgradeHold: d.upgradeHold() === true,
|
|
2299
|
-
manualRestart: d.manualRestart() === true,
|
|
2300
|
-
spawnBlocked: !!(d.mSpawnBlockedUntil() && now < d.mSpawnBlockedUntil()),
|
|
2301
|
-
startDeadlinePassed: startDeadlinePassed(startDeadline, now),
|
|
2302
|
-
restartInFlight: phase === "STARTING" && startDeadline === null,
|
|
2303
|
-
restartDue: d.mRestartAt() === null || now >= d.mRestartAt(),
|
|
2304
|
-
crashHalted: d.crashHalted() === true,
|
|
2305
|
-
sessionHalting: d.session().halting() === true,
|
|
2306
|
-
startupFailWindowStart: d.mStartupFailWindowStart(),
|
|
2307
|
-
startupFailCount: d.mStartupFailCount()
|
|
2308
|
-
};
|
|
2309
|
-
}
|
|
2310
|
-
},
|
|
2311
|
-
startDeadlinePassed,
|
|
2312
|
-
childAlive,
|
|
2313
|
-
adoptedAlive,
|
|
2314
|
-
targetAlive
|
|
2315
|
-
};
|
|
2316
|
-
}
|
|
2317
|
-
});
|
|
2318
|
-
|
|
2319
|
-
// src/app/state/upgrade-hold.js
|
|
2320
|
-
var require_upgrade_hold = __commonJS({
|
|
2321
|
-
"src/app/state/upgrade-hold.js"(exports2, module2) {
|
|
2322
|
-
"use strict";
|
|
2323
|
-
var pidlook = require_pidlookup();
|
|
2324
|
-
var { childAlive: childAliveOf, adoptedAlive: adoptedAliveOf } = require_decide();
|
|
2325
|
-
function createUpgradeHold(deps) {
|
|
2326
|
-
const g = deps || {};
|
|
2327
|
-
const fields = g.fields;
|
|
2328
|
-
const store = () => typeof g.getStore === "function" ? g.getStore() : null;
|
|
2329
|
-
const config = () => typeof g.getConfig === "function" ? g.getConfig() || {} : {};
|
|
2330
|
-
const intents = () => typeof g.getIntents === "function" ? g.getIntents() : null;
|
|
2331
|
-
const tick = () => {
|
|
2332
|
-
if (typeof g.tick === "function") g.tick();
|
|
2333
|
-
};
|
|
2334
|
-
const stopProcess = (why) => {
|
|
2335
|
-
if (typeof g.stopProcess === "function") g.stopProcess(why);
|
|
2336
|
-
};
|
|
2337
|
-
const setHold = typeof g.setHold === "function" ? g.setHold : () => {
|
|
2338
|
-
};
|
|
2339
|
-
const setSince = typeof g.setSince === "function" ? g.setSince : () => {
|
|
2340
|
-
};
|
|
2341
|
-
function enter() {
|
|
2342
|
-
setHold(true);
|
|
2343
|
-
setSince(Date.now());
|
|
2344
|
-
const child = fields.child();
|
|
2345
|
-
const adoptPid = fields.adoptPid();
|
|
2346
|
-
const targetAlive = childAliveOf(child) || adoptedAliveOf(adoptPid);
|
|
2347
|
-
if (targetAlive) {
|
|
2348
|
-
stopProcess("upgrade");
|
|
2349
|
-
} else if (fields.phase() !== "STOPPED") {
|
|
2350
|
-
fields.setPhase("STOPPED");
|
|
2351
|
-
const s = store();
|
|
2352
|
-
if (s) s.writeState();
|
|
2353
|
-
}
|
|
2354
|
-
}
|
|
2355
|
-
async function enterAsync() {
|
|
2356
|
-
const refs = { child: fields.child(), adoptedPid: fields.adoptPid() };
|
|
2357
|
-
enter();
|
|
2358
|
-
if (childAliveOf(refs.child)) {
|
|
2359
|
-
await new Promise((resolve) => {
|
|
2360
|
-
let settled = false;
|
|
2361
|
-
const done = () => {
|
|
2362
|
-
if (!settled) {
|
|
2363
|
-
settled = true;
|
|
2364
|
-
resolve();
|
|
2365
|
-
}
|
|
2366
|
-
};
|
|
2367
|
-
refs.child.once("exit", done);
|
|
2368
|
-
setTimeout(done, config().stopGraceMs + 5e3);
|
|
2369
|
-
});
|
|
2370
|
-
return;
|
|
2371
|
-
}
|
|
2372
|
-
if (refs.adoptedPid && pidlook.isAlive(refs.adoptedPid)) {
|
|
2373
|
-
await new Promise((resolve) => {
|
|
2374
|
-
let settled = false;
|
|
2375
|
-
const done = () => {
|
|
2376
|
-
if (!settled) {
|
|
2377
|
-
settled = true;
|
|
2378
|
-
resolve();
|
|
2379
|
-
}
|
|
2380
|
-
};
|
|
2381
|
-
const start = Date.now();
|
|
2382
|
-
const check = () => {
|
|
2383
|
-
if (!pidlook.isAlive(refs.adoptedPid)) return done();
|
|
2384
|
-
if (Date.now() > start + config().stopGraceMs + 5e3) return done();
|
|
2385
|
-
setTimeout(check, 200);
|
|
2386
|
-
};
|
|
2387
|
-
check();
|
|
2388
|
-
});
|
|
2389
|
-
}
|
|
2390
|
-
}
|
|
2391
|
-
function exit(explicit) {
|
|
2392
|
-
setHold(false);
|
|
2393
|
-
setSince(null);
|
|
2394
|
-
if (explicit) {
|
|
2395
|
-
const it = intents();
|
|
2396
|
-
if (it) it.register("upgrade-resume");
|
|
2397
|
-
}
|
|
2398
|
-
tick();
|
|
2399
|
-
}
|
|
2400
|
-
return { enter, enterAsync, exit };
|
|
2401
|
-
}
|
|
2402
|
-
module2.exports = { createUpgradeHold };
|
|
2403
|
-
}
|
|
2404
|
-
});
|
|
2405
|
-
|
|
2406
2201
|
// src/app/state/collaborator.js
|
|
2407
2202
|
var require_collaborator = __commonJS({
|
|
2408
2203
|
"src/app/state/collaborator.js"(exports2, module2) {
|
|
@@ -2412,7 +2207,6 @@ var require_collaborator = __commonJS({
|
|
|
2412
2207
|
var { createFields } = require_fields();
|
|
2413
2208
|
var { createStore } = require_store();
|
|
2414
2209
|
var { createDesired } = require_desired();
|
|
2415
|
-
var { createUpgradeHold } = require_upgrade_hold();
|
|
2416
2210
|
function createStateStore(deps) {
|
|
2417
2211
|
const g = deps || {};
|
|
2418
2212
|
const logger = () => typeof g.getLogger === "function" ? g.getLogger() : null;
|
|
@@ -2420,21 +2214,10 @@ var require_collaborator = __commonJS({
|
|
|
2420
2214
|
const mainStore = createMainStore({ getConfig: g.getConfig, getLogger: logger });
|
|
2421
2215
|
const fields = createFields({ record, mainStore, getManagedObjects: g.getManagedObjects, getLogger: logger });
|
|
2422
2216
|
const holder = {};
|
|
2423
|
-
const upgradeHold = createUpgradeHold({
|
|
2424
|
-
fields,
|
|
2425
|
-
getStore: () => holder.store,
|
|
2426
|
-
getConfig: g.getConfig,
|
|
2427
|
-
getIntents: g.getIntents,
|
|
2428
|
-
tick: g.tick,
|
|
2429
|
-
stopProcess: g.stopProcess,
|
|
2430
|
-
setHold: g.setHold,
|
|
2431
|
-
setSince: g.setSince
|
|
2432
|
-
});
|
|
2433
2217
|
const store = createStore({
|
|
2434
2218
|
record,
|
|
2435
2219
|
fields,
|
|
2436
2220
|
mainStore,
|
|
2437
|
-
upgradeHold,
|
|
2438
2221
|
getConfig: g.getConfig,
|
|
2439
2222
|
getLogger: logger,
|
|
2440
2223
|
getEvents: g.getEvents,
|
|
@@ -2480,10 +2263,7 @@ var require_collaborator = __commonJS({
|
|
|
2480
2263
|
loadState: store.loadState,
|
|
2481
2264
|
migrateMainRecord: store.migrateMainRecord,
|
|
2482
2265
|
setDesiredPublic: desired.setDesired,
|
|
2483
|
-
requestRestart: desired.requestRestart
|
|
2484
|
-
enterUpgradeHold: upgradeHold.enter,
|
|
2485
|
-
enterUpgradeHoldAsync: upgradeHold.enterAsync,
|
|
2486
|
-
exitUpgradeHold: upgradeHold.exit
|
|
2266
|
+
requestRestart: desired.requestRestart
|
|
2487
2267
|
};
|
|
2488
2268
|
}
|
|
2489
2269
|
module2.exports = { createStateStore };
|
|
@@ -4710,8 +4490,6 @@ var require_collaborators = __commonJS({
|
|
|
4710
4490
|
},
|
|
4711
4491
|
main: {
|
|
4712
4492
|
converge: "_dshConverge",
|
|
4713
|
-
noteStartupFailure: "_noteStartupFailure",
|
|
4714
|
-
retryStartupFailure: "_retryStartupFailure",
|
|
4715
4493
|
startWindowMs: "startWindowMs",
|
|
4716
4494
|
adopt: "_adopt",
|
|
4717
4495
|
adoptObserved: "_adoptObserved",
|
|
@@ -4782,14 +4560,6 @@ var require_collaborators = __commonJS({
|
|
|
4782
4560
|
setManualRestart: (v) => {
|
|
4783
4561
|
host.manualRestart = v;
|
|
4784
4562
|
},
|
|
4785
|
-
getHold: () => host._upgradeHold,
|
|
4786
|
-
setHold: (v) => {
|
|
4787
|
-
host._upgradeHold = v;
|
|
4788
|
-
},
|
|
4789
|
-
getSince: () => host._upgradeHoldSince,
|
|
4790
|
-
setSince: (v) => {
|
|
4791
|
-
host._upgradeHoldSince = v;
|
|
4792
|
-
},
|
|
4793
4563
|
getShellHalted: () => host._shellHalted,
|
|
4794
4564
|
setShellHalted: (v) => {
|
|
4795
4565
|
host._shellHalted = v;
|
|
@@ -4817,9 +4587,6 @@ var require_collaborators = __commonJS({
|
|
|
4817
4587
|
host.setDesired = (v) => state.setDesiredPublic(v);
|
|
4818
4588
|
host.requestRestart = () => state.requestRestart();
|
|
4819
4589
|
host.persistConfigPatch = (patch) => state.persistConfigPatch(patch);
|
|
4820
|
-
host._enterUpgradeHold = () => state.enterUpgradeHold();
|
|
4821
|
-
host._enterUpgradeHoldAsync = () => state.enterUpgradeHoldAsync();
|
|
4822
|
-
host._exitUpgradeHold = (explicit) => state.exitUpgradeHold(explicit);
|
|
4823
4590
|
installFieldHelpers(host, state);
|
|
4824
4591
|
for (const name of Object.keys(state.accessors)) Object.defineProperty(host, name, state.accessors[name]);
|
|
4825
4592
|
}
|
|
@@ -4830,7 +4597,10 @@ var require_collaborators = __commonJS({
|
|
|
4830
4597
|
crashHalted: () => host._crashHalted
|
|
4831
4598
|
});
|
|
4832
4599
|
host.session = session;
|
|
4833
|
-
host.sessionState = () =>
|
|
4600
|
+
host.sessionState = () => {
|
|
4601
|
+
const p = String(host._mPhase ? host._mPhase() : "").toUpperCase();
|
|
4602
|
+
return p === "STARTING" || p === "RUNNING" ? "running" : "stopped";
|
|
4603
|
+
};
|
|
4834
4604
|
host._setSessionState = (s) => {
|
|
4835
4605
|
session.setState(s);
|
|
4836
4606
|
};
|
|
@@ -8071,122 +7841,6 @@ var require_os = __commonJS({
|
|
|
8071
7841
|
}
|
|
8072
7842
|
});
|
|
8073
7843
|
|
|
8074
|
-
// src/platform/contract/pm-client.js
|
|
8075
|
-
var require_pm_client = __commonJS({
|
|
8076
|
-
"src/platform/contract/pm-client.js"(exports2, module2) {
|
|
8077
|
-
"use strict";
|
|
8078
|
-
var fs2 = require("node:fs");
|
|
8079
|
-
var path2 = require("node:path");
|
|
8080
|
-
var http2 = require("node:http");
|
|
8081
|
-
var stateRoot2 = require_state_root();
|
|
8082
|
-
var pidlookup = require_pidlookup();
|
|
8083
|
-
var FILE_NAME = "guard-mgmt.json";
|
|
8084
|
-
var SUPPORTED_SCHEMA = 1;
|
|
8085
|
-
var HOST = "127.0.0.1";
|
|
8086
|
-
var TIMEOUT_MS = 1500;
|
|
8087
|
-
var unavailableHook = null;
|
|
8088
|
-
function setUnavailableHook(fn) {
|
|
8089
|
-
unavailableHook = typeof fn === "function" ? fn : null;
|
|
8090
|
-
}
|
|
8091
|
-
function file() {
|
|
8092
|
-
return path2.join(stateRoot2.supervisorDir(), FILE_NAME);
|
|
8093
|
-
}
|
|
8094
|
-
function pidAlive2(pid) {
|
|
8095
|
-
if (!Number.isInteger(pid) || pid <= 0) return false;
|
|
8096
|
-
return pidlookup.probeAlive(pid) === "alive";
|
|
8097
|
-
}
|
|
8098
|
-
function endpoint() {
|
|
8099
|
-
let text;
|
|
8100
|
-
try {
|
|
8101
|
-
text = fs2.readFileSync(file(), "utf8");
|
|
8102
|
-
} catch {
|
|
8103
|
-
return null;
|
|
8104
|
-
}
|
|
8105
|
-
let j;
|
|
8106
|
-
try {
|
|
8107
|
-
j = JSON.parse(text);
|
|
8108
|
-
} catch {
|
|
8109
|
-
return null;
|
|
8110
|
-
}
|
|
8111
|
-
if (!j || typeof j !== "object" || j.schema !== SUPPORTED_SCHEMA) return null;
|
|
8112
|
-
const port = Number(j.port);
|
|
8113
|
-
if (!Number.isInteger(port) || port <= 0 || port > 65535) return null;
|
|
8114
|
-
if (!pidAlive2(Number(j.pid))) return null;
|
|
8115
|
-
return { port, host: typeof j.host === "string" && j.host ? j.host : HOST };
|
|
8116
|
-
}
|
|
8117
|
-
function post(route, payload) {
|
|
8118
|
-
const ep = endpoint();
|
|
8119
|
-
if (!ep) {
|
|
8120
|
-
if (unavailableHook) {
|
|
8121
|
-
try {
|
|
8122
|
-
unavailableHook(route);
|
|
8123
|
-
} catch {
|
|
8124
|
-
}
|
|
8125
|
-
}
|
|
8126
|
-
return false;
|
|
8127
|
-
}
|
|
8128
|
-
let body;
|
|
8129
|
-
try {
|
|
8130
|
-
body = JSON.stringify(payload || {});
|
|
8131
|
-
} catch {
|
|
8132
|
-
return false;
|
|
8133
|
-
}
|
|
8134
|
-
const req = http2.request(
|
|
8135
|
-
{
|
|
8136
|
-
host: ep.host,
|
|
8137
|
-
port: ep.port,
|
|
8138
|
-
path: route,
|
|
8139
|
-
method: "POST",
|
|
8140
|
-
headers: { "content-type": "application/json", "content-length": Buffer.byteLength(body) },
|
|
8141
|
-
timeout: TIMEOUT_MS
|
|
8142
|
-
},
|
|
8143
|
-
(res) => {
|
|
8144
|
-
res.resume();
|
|
8145
|
-
}
|
|
8146
|
-
);
|
|
8147
|
-
req.on("timeout", () => {
|
|
8148
|
-
try {
|
|
8149
|
-
req.destroy();
|
|
8150
|
-
} catch {
|
|
8151
|
-
}
|
|
8152
|
-
});
|
|
8153
|
-
req.on("error", () => {
|
|
8154
|
-
});
|
|
8155
|
-
try {
|
|
8156
|
-
req.end(body);
|
|
8157
|
-
return true;
|
|
8158
|
-
} catch {
|
|
8159
|
-
return false;
|
|
8160
|
-
}
|
|
8161
|
-
}
|
|
8162
|
-
module2.exports = {
|
|
8163
|
-
FILE_NAME,
|
|
8164
|
-
SUPPORTED_SCHEMA,
|
|
8165
|
-
file,
|
|
8166
|
-
endpoint,
|
|
8167
|
-
setUnavailableHook,
|
|
8168
|
-
register(desc) {
|
|
8169
|
-
return post("/pm/register", desc);
|
|
8170
|
-
},
|
|
8171
|
-
setDesired(id, desired) {
|
|
8172
|
-
return post("/pm/set-desired", { id, desired });
|
|
8173
|
-
},
|
|
8174
|
-
onPhase(id, phase) {
|
|
8175
|
-
return post("/pm/on-phase", { id, phase });
|
|
8176
|
-
},
|
|
8177
|
-
recordExit(id, code, signal, startupFailure) {
|
|
8178
|
-
return post("/pm/record-exit", { id, code, signal, startup_failure: startupFailure === true });
|
|
8179
|
-
},
|
|
8180
|
-
requestRestart(id) {
|
|
8181
|
-
return post("/pm/request-restart", { id });
|
|
8182
|
-
},
|
|
8183
|
-
resetBackoff(id) {
|
|
8184
|
-
return post("/pm/reset-backoff", { id });
|
|
8185
|
-
}
|
|
8186
|
-
};
|
|
8187
|
-
}
|
|
8188
|
-
});
|
|
8189
|
-
|
|
8190
7844
|
// src/app/assembly/bootstrap.js
|
|
8191
7845
|
var require_bootstrap = __commonJS({
|
|
8192
7846
|
"src/app/assembly/bootstrap.js"(exports2, module2) {
|
|
@@ -8202,15 +7856,6 @@ var require_bootstrap = __commonJS({
|
|
|
8202
7856
|
var platform = require_os();
|
|
8203
7857
|
var ENV_FORM_STARTUP_DELAY_MS = 3e3;
|
|
8204
7858
|
function _bootstrap(host) {
|
|
8205
|
-
try {
|
|
8206
|
-
require_pm_client().setUnavailableHook((route) => {
|
|
8207
|
-
try {
|
|
8208
|
-
host.events.append("pm_endpoint_unavailable", { route });
|
|
8209
|
-
} catch {
|
|
8210
|
-
}
|
|
8211
|
-
});
|
|
8212
|
-
} catch {
|
|
8213
|
-
}
|
|
8214
7859
|
try {
|
|
8215
7860
|
host.events.append("guard_started", {
|
|
8216
7861
|
pid: process.pid,
|
|
@@ -10143,44 +9788,6 @@ var require_scheduler = __commonJS({
|
|
|
10143
9788
|
async tick() {
|
|
10144
9789
|
const d = depsOf(this);
|
|
10145
9790
|
return d.main().converge();
|
|
10146
|
-
},
|
|
10147
|
-
async _dshSuperviseOnce() {
|
|
10148
|
-
const d = depsOf(this);
|
|
10149
|
-
try {
|
|
10150
|
-
if (d.stopping()) return { ok: false, error: "guard stopping" };
|
|
10151
|
-
if (d.exitIntended()) return { ok: false, error: "exit intended" };
|
|
10152
|
-
await d.main().converge();
|
|
10153
|
-
try {
|
|
10154
|
-
d.control().syncInstancesView();
|
|
10155
|
-
} catch (e) {
|
|
10156
|
-
d.logger() && d.logger().warn && d.logger().warn("instances view sync: " + (e && e.message || e));
|
|
10157
|
-
}
|
|
10158
|
-
} catch (e) {
|
|
10159
|
-
d.logger() && d.logger().warn && d.logger().warn("[dsh] supervise \u5F02\u5E38: " + (e && e.message || e));
|
|
10160
|
-
}
|
|
10161
|
-
try {
|
|
10162
|
-
const now = Date.now();
|
|
10163
|
-
if (!d.readLastOrphanAuditAt() || now - d.readLastOrphanAuditAt() > 6e4) {
|
|
10164
|
-
d.writeLastOrphanAuditAt(now);
|
|
10165
|
-
d.audit().orphan();
|
|
10166
|
-
}
|
|
10167
|
-
} catch (e) {
|
|
10168
|
-
d.logger() && d.logger().debug && d.logger().debug("orphan audit: " + (e && e.message || e));
|
|
10169
|
-
}
|
|
10170
|
-
if (d.eventHub()) {
|
|
10171
|
-
try {
|
|
10172
|
-
await d.eventHub().sync();
|
|
10173
|
-
} catch (e) {
|
|
10174
|
-
d.logger() && d.logger().debug && d.logger().debug("eventHub sync: " + (e && e.message || e));
|
|
10175
|
-
}
|
|
10176
|
-
}
|
|
10177
|
-
const snap = d.mainSnapshot();
|
|
10178
|
-
const alive = !!(snap && (snap.childAlive || snap.adoptedAlive));
|
|
10179
|
-
const ph = d.state().phase();
|
|
10180
|
-
return {
|
|
10181
|
-
ok: alive,
|
|
10182
|
-
error: alive ? null : ph === "FAILED" ? "\u542F\u52A8\u53CD\u590D\u5931\u8D25\uFF1A\u5DF2\u505C\u6B62\u81EA\u52A8\u91CD\u542F\uFF0C\u7B49\u5F85\u4EBA\u5DE5\u91CD\u8BD5" : ph === "STARTING" ? "\u542F\u52A8\u7A97\u53E3\u5185\u8FDB\u7A0B\u5DF2\u9000\u51FA\uFF0C\u7B49\u5F85\u91CD\u542F" : "\u8FDB\u7A0B\u672A\u8FD0\u884C"
|
|
10183
|
-
};
|
|
10184
9791
|
}
|
|
10185
9792
|
}
|
|
10186
9793
|
};
|
|
@@ -10269,7 +9876,113 @@ var require_instance_adapter = __commonJS({
|
|
|
10269
9876
|
d.logger() && d.logger().warn && d.logger().warn("sandbox setRestartCount: " + (e && e.message || e));
|
|
10270
9877
|
}
|
|
10271
9878
|
}
|
|
10272
|
-
}
|
|
9879
|
+
}
|
|
9880
|
+
};
|
|
9881
|
+
}
|
|
9882
|
+
});
|
|
9883
|
+
|
|
9884
|
+
// src/app/main/decide.js
|
|
9885
|
+
var require_decide = __commonJS({
|
|
9886
|
+
"src/app/main/decide.js"(exports2, module2) {
|
|
9887
|
+
"use strict";
|
|
9888
|
+
var pidlook = require_pidlookup();
|
|
9889
|
+
function startDeadlinePassed(deadline, now) {
|
|
9890
|
+
return !!(deadline && now > deadline);
|
|
9891
|
+
}
|
|
9892
|
+
function childAlive(child) {
|
|
9893
|
+
return !!(child && child.exitCode === null && child.signalCode === null);
|
|
9894
|
+
}
|
|
9895
|
+
function adoptedAlive(adoptPid) {
|
|
9896
|
+
return adoptPid !== null && adoptPid !== void 0 && pidlook.isAlive(adoptPid);
|
|
9897
|
+
}
|
|
9898
|
+
function targetAlive(child, adoptPid) {
|
|
9899
|
+
return childAlive(child) || adoptedAlive(adoptPid);
|
|
9900
|
+
}
|
|
9901
|
+
var DEPS = /* @__PURE__ */ new WeakMap();
|
|
9902
|
+
function depsOf(host) {
|
|
9903
|
+
let d = DEPS.get(host);
|
|
9904
|
+
if (!d) {
|
|
9905
|
+
d = {
|
|
9906
|
+
state() {
|
|
9907
|
+
return host.state;
|
|
9908
|
+
},
|
|
9909
|
+
session() {
|
|
9910
|
+
return host.session;
|
|
9911
|
+
},
|
|
9912
|
+
manualRestart() {
|
|
9913
|
+
return host.manualRestart;
|
|
9914
|
+
},
|
|
9915
|
+
crashHalted() {
|
|
9916
|
+
return host._crashHalted;
|
|
9917
|
+
},
|
|
9918
|
+
portUp() {
|
|
9919
|
+
return host._lastPortUp === true;
|
|
9920
|
+
},
|
|
9921
|
+
mChild() {
|
|
9922
|
+
return host._mChild();
|
|
9923
|
+
},
|
|
9924
|
+
mAdoptPid() {
|
|
9925
|
+
return host._mAdoptPid();
|
|
9926
|
+
},
|
|
9927
|
+
mAdopted() {
|
|
9928
|
+
return host._mAdopted();
|
|
9929
|
+
},
|
|
9930
|
+
mObservedOnly() {
|
|
9931
|
+
return host._mObservedOnly();
|
|
9932
|
+
},
|
|
9933
|
+
mSpawnBlockedUntil() {
|
|
9934
|
+
return host._mSpawnBlockedUntil();
|
|
9935
|
+
},
|
|
9936
|
+
mStartDeadline() {
|
|
9937
|
+
return host._mStartDeadline();
|
|
9938
|
+
},
|
|
9939
|
+
mRestartAt() {
|
|
9940
|
+
return host._mRestartAt();
|
|
9941
|
+
},
|
|
9942
|
+
mStartupFailWindowStart() {
|
|
9943
|
+
return host._mStartupFailWindowStart();
|
|
9944
|
+
},
|
|
9945
|
+
mStartupFailCount() {
|
|
9946
|
+
return host._mStartupFailCount();
|
|
9947
|
+
}
|
|
9948
|
+
};
|
|
9949
|
+
DEPS.set(host, d);
|
|
9950
|
+
}
|
|
9951
|
+
return d;
|
|
9952
|
+
}
|
|
9953
|
+
module2.exports = {
|
|
9954
|
+
methods: {
|
|
9955
|
+
_mainStateSnapshot() {
|
|
9956
|
+
const d = depsOf(this);
|
|
9957
|
+
const now = Date.now();
|
|
9958
|
+
const phase = d.state().phase();
|
|
9959
|
+
const startDeadline = d.mStartDeadline();
|
|
9960
|
+
return {
|
|
9961
|
+
phase,
|
|
9962
|
+
desired: d.state().desired(),
|
|
9963
|
+
portUp: d.portUp() === true,
|
|
9964
|
+
childAlive: childAlive(d.mChild()),
|
|
9965
|
+
adoptedAlive: adoptedAlive(d.mAdoptPid()),
|
|
9966
|
+
adoptedPidSet: d.mAdoptPid() !== null,
|
|
9967
|
+
childPresent: d.mChild() !== null,
|
|
9968
|
+
adopted: d.mAdopted() === true,
|
|
9969
|
+
observedOnly: d.mObservedOnly() === true,
|
|
9970
|
+
manualRestart: d.manualRestart() === true,
|
|
9971
|
+
spawnBlocked: !!(d.mSpawnBlockedUntil() && now < d.mSpawnBlockedUntil()),
|
|
9972
|
+
startDeadlinePassed: startDeadlinePassed(startDeadline, now),
|
|
9973
|
+
restartInFlight: phase === "STARTING" && startDeadline === null,
|
|
9974
|
+
restartDue: d.mRestartAt() === null || now >= d.mRestartAt(),
|
|
9975
|
+
crashHalted: d.crashHalted() === true,
|
|
9976
|
+
sessionHalting: d.session().halting() === true,
|
|
9977
|
+
startupFailWindowStart: d.mStartupFailWindowStart(),
|
|
9978
|
+
startupFailCount: d.mStartupFailCount()
|
|
9979
|
+
};
|
|
9980
|
+
}
|
|
9981
|
+
},
|
|
9982
|
+
startDeadlinePassed,
|
|
9983
|
+
childAlive,
|
|
9984
|
+
adoptedAlive,
|
|
9985
|
+
targetAlive
|
|
10273
9986
|
};
|
|
10274
9987
|
}
|
|
10275
9988
|
});
|
|
@@ -10400,18 +10113,6 @@ var require_controller = __commonJS({
|
|
|
10400
10113
|
writeLastPortUp(v) {
|
|
10401
10114
|
host._lastPortUp = v;
|
|
10402
10115
|
},
|
|
10403
|
-
upgradeHold() {
|
|
10404
|
-
return host._upgradeHold;
|
|
10405
|
-
},
|
|
10406
|
-
writeUpgradeHold(v) {
|
|
10407
|
-
host._upgradeHold = v;
|
|
10408
|
-
},
|
|
10409
|
-
upgradeHoldSince() {
|
|
10410
|
-
return host._upgradeHoldSince;
|
|
10411
|
-
},
|
|
10412
|
-
writeUpgradeHoldSince(v) {
|
|
10413
|
-
host._upgradeHoldSince = v;
|
|
10414
|
-
},
|
|
10415
10116
|
manualRestart() {
|
|
10416
10117
|
return host.manualRestart;
|
|
10417
10118
|
},
|
|
@@ -10422,7 +10123,8 @@ var require_controller = __commonJS({
|
|
|
10422
10123
|
host._crashHalted = v;
|
|
10423
10124
|
},
|
|
10424
10125
|
sessionState() {
|
|
10425
|
-
|
|
10126
|
+
const p = String(host._mPhase() || "").toUpperCase();
|
|
10127
|
+
return p === "STARTING" || p === "RUNNING" ? "running" : "stopped";
|
|
10426
10128
|
},
|
|
10427
10129
|
mChild() {
|
|
10428
10130
|
return host._mChild();
|
|
@@ -10497,8 +10199,8 @@ var require_controller = __commonJS({
|
|
|
10497
10199
|
if (managedAlive) {
|
|
10498
10200
|
d.main().stopProcess("desired_stopped");
|
|
10499
10201
|
} else if (adoptedAlive && d.mObservedOnly()) {
|
|
10500
|
-
|
|
10501
|
-
|
|
10202
|
+
d.state().setObservedOnly(true);
|
|
10203
|
+
if (d.state().phase() !== "STOPPED") {
|
|
10502
10204
|
d.state().write();
|
|
10503
10205
|
}
|
|
10504
10206
|
} else if (portUp) {
|
|
@@ -10514,22 +10216,6 @@ var require_controller = __commonJS({
|
|
|
10514
10216
|
d.state().write();
|
|
10515
10217
|
return;
|
|
10516
10218
|
}
|
|
10517
|
-
if (d.upgradeHold()) {
|
|
10518
|
-
if (targetAlive) {
|
|
10519
|
-
d.main().stopProcess("upgrade_hold");
|
|
10520
|
-
} else {
|
|
10521
|
-
if (d.state().phase() !== "STOPPED") d.state().setPhase("STOPPED");
|
|
10522
|
-
const maxHold = (d.config().upgradeTimeoutMs || 6e5) + 12e4;
|
|
10523
|
-
if (d.upgradeHoldSince() && Date.now() - d.upgradeHoldSince() > maxHold) {
|
|
10524
|
-
d.events().append("upgrade_hold_timeout", {});
|
|
10525
|
-
d.ui().notify("\u5347\u7EA7\u6D41\u7A0B\u5F02\u5E38", "\u5347\u7EA7 hold \u8D85\u65F6\u5DF2\u81EA\u52A8\u91CA\u653E\uFF0C\u8BF7\u68C0\u67E5\u5347\u7EA7\u72B6\u6001");
|
|
10526
|
-
d.writeUpgradeHold(false);
|
|
10527
|
-
d.writeUpgradeHoldSince(null);
|
|
10528
|
-
}
|
|
10529
|
-
}
|
|
10530
|
-
d.state().write();
|
|
10531
|
-
return;
|
|
10532
|
-
}
|
|
10533
10219
|
const manual = d.manualRestart();
|
|
10534
10220
|
if (manual) {
|
|
10535
10221
|
d.writeManualRestart(false);
|
|
@@ -10543,6 +10229,16 @@ var require_controller = __commonJS({
|
|
|
10543
10229
|
d.intents().consume("start");
|
|
10544
10230
|
}
|
|
10545
10231
|
}
|
|
10232
|
+
{
|
|
10233
|
+
const nst = host.nativeManager ? host.nativeManager.status() : null;
|
|
10234
|
+
if (nst && nst.installed === false) {
|
|
10235
|
+
const ph0 = String(d.state().phase() || "").toUpperCase();
|
|
10236
|
+
if (ph0 === "STARTING" || ph0 === "RUNNING") {
|
|
10237
|
+
d.events().append("state_corrected", { from: ph0, to: "STOPPED", reason: "harness_not_installed" });
|
|
10238
|
+
d.state().setPhase("STOPPED");
|
|
10239
|
+
}
|
|
10240
|
+
}
|
|
10241
|
+
}
|
|
10546
10242
|
switch (d.state().phase()) {
|
|
10547
10243
|
case "STOPPED": {
|
|
10548
10244
|
if (portUp) {
|
|
@@ -10603,7 +10299,6 @@ var require_controller = __commonJS({
|
|
|
10603
10299
|
const wantsRetry = manual || startIntent !== void 0 || restartIntent !== void 0;
|
|
10604
10300
|
if (!wantsRetry) break;
|
|
10605
10301
|
if (d.state().desired() === "stopped") break;
|
|
10606
|
-
d.main().retryStartupFailure();
|
|
10607
10302
|
d.mSetStartDeadline(null);
|
|
10608
10303
|
d.mSetRestartAt(null);
|
|
10609
10304
|
if (targetAlive) d.main().beginRestart("manual", { manual: true, startupFailure: false });
|
|
@@ -10623,7 +10318,7 @@ var require_controller = __commonJS({
|
|
|
10623
10318
|
d.logger().error("tick error: " + (e && e.stack || e));
|
|
10624
10319
|
} finally {
|
|
10625
10320
|
d.writeTicking(false);
|
|
10626
|
-
if (d.sessionState() === "
|
|
10321
|
+
if (d.sessionState() === "running") d.session().setState("running");
|
|
10627
10322
|
try {
|
|
10628
10323
|
d.control().syncDshView();
|
|
10629
10324
|
} catch (e) {
|
|
@@ -10897,7 +10592,6 @@ var require_process2 = __commonJS({
|
|
|
10897
10592
|
var native = require_command();
|
|
10898
10593
|
var BRAND2 = require_brand();
|
|
10899
10594
|
var { findManagedDshPort, applyMainPort } = require_port_rederive();
|
|
10900
|
-
var pmClient = require_pm_client();
|
|
10901
10595
|
var DEPS = /* @__PURE__ */ new WeakMap();
|
|
10902
10596
|
var HELPERS = [
|
|
10903
10597
|
"MissingNotified",
|
|
@@ -11032,7 +10726,6 @@ var require_process2 = __commonJS({
|
|
|
11032
10726
|
errBuf.flush();
|
|
11033
10727
|
if (d.mChild() !== child) return;
|
|
11034
10728
|
d.events().append(BRAND2.EVENT_HARNESS_EXITED, { code, signal, phase: d.state().phase() });
|
|
11035
|
-
pmClient.recordExit("main", code, signal, d.state().phase() === "STARTING");
|
|
11036
10729
|
d.mSetChild(null);
|
|
11037
10730
|
if (d.stopping()) return;
|
|
11038
10731
|
if (d.state().desired() !== "running") return;
|
|
@@ -11042,7 +10735,6 @@ var require_process2 = __commonJS({
|
|
|
11042
10735
|
const why = code !== null ? String(code) : "sig" + signal;
|
|
11043
10736
|
const inStartup = phase === "STARTING";
|
|
11044
10737
|
if (inStartup || d.state().guardian()) {
|
|
11045
|
-
pmClient.requestRestart("main");
|
|
11046
10738
|
d.beginRestart("exit:" + why, { startupFailure: inStartup });
|
|
11047
10739
|
} else {
|
|
11048
10740
|
d.writeCrashHalted(true);
|
|
@@ -11072,7 +10764,8 @@ var require_process2 = __commonJS({
|
|
|
11072
10764
|
},
|
|
11073
10765
|
_adoptObserved() {
|
|
11074
10766
|
const d = depsOf(this);
|
|
11075
|
-
d.state().
|
|
10767
|
+
d.state().setObservedOnly(true);
|
|
10768
|
+
d.state().setPhase("STOPPED");
|
|
11076
10769
|
d.mSetAdopted(true);
|
|
11077
10770
|
d.mSetObservedOnly(true);
|
|
11078
10771
|
d.mSetChild(null);
|
|
@@ -11130,7 +10823,7 @@ var require_process2 = __commonJS({
|
|
|
11130
10823
|
d.logger().warn("restart triggered: " + reason + (startupFailure ? "\uFF08\u542F\u52A8\u7A97\u53E3\u5185\u9000\u51FA\uFF0C\u8BA1\u4E00\u6B21\u542F\u52A8\u5931\u8D25\uFF09" : "\uFF08\u6B63\u5E38\u91CD\u542F\uFF09"));
|
|
11131
10824
|
d.tokenService().clear("main");
|
|
11132
10825
|
if (!manual) d.mSetRestartCount(d.mRestartCount() + 1);
|
|
11133
|
-
const throttle =
|
|
10826
|
+
const throttle = null;
|
|
11134
10827
|
if (throttle && throttle.failed) {
|
|
11135
10828
|
d.mSetRestartAt(null);
|
|
11136
10829
|
} else {
|
|
@@ -11358,247 +11051,6 @@ var require_signals = __commonJS({
|
|
|
11358
11051
|
}
|
|
11359
11052
|
});
|
|
11360
11053
|
|
|
11361
|
-
// src/shared/guardian.js
|
|
11362
|
-
var require_guardian = __commonJS({
|
|
11363
|
-
"src/shared/guardian.js"(exports2, module2) {
|
|
11364
|
-
"use strict";
|
|
11365
|
-
function shouldGuard(inst) {
|
|
11366
|
-
return !!(inst && inst.guardian === true);
|
|
11367
|
-
}
|
|
11368
|
-
function bumpStartupFailure(w, now, cfg) {
|
|
11369
|
-
const windowMs = cfg && Number(cfg.windowMs) > 0 ? Number(cfg.windowMs) : 6e4;
|
|
11370
|
-
const burst = cfg && Number(cfg.burst) >= 1 ? Number(cfg.burst) : 5;
|
|
11371
|
-
let start = w.start;
|
|
11372
|
-
let count = w.count;
|
|
11373
|
-
if (start === null || start === void 0 || now - start > windowMs) {
|
|
11374
|
-
start = now;
|
|
11375
|
-
count = 1;
|
|
11376
|
-
} else {
|
|
11377
|
-
count += 1;
|
|
11378
|
-
}
|
|
11379
|
-
return { start, count, tripped: count >= burst };
|
|
11380
|
-
}
|
|
11381
|
-
function makeBudget(cfg) {
|
|
11382
|
-
const windowMs = cfg && Number(cfg.windowMs) > 0 ? Number(cfg.windowMs) : 6e4;
|
|
11383
|
-
const burst = cfg && Number(cfg.burst) >= 1 ? Number(cfg.burst) : 5;
|
|
11384
|
-
let state = { start: null, count: 0 };
|
|
11385
|
-
const self = {
|
|
11386
|
-
windowMs,
|
|
11387
|
-
burst,
|
|
11388
|
-
get count() {
|
|
11389
|
-
return state.count;
|
|
11390
|
-
},
|
|
11391
|
-
get tripped() {
|
|
11392
|
-
return state.count >= burst;
|
|
11393
|
-
},
|
|
11394
|
-
note(startupFailure) {
|
|
11395
|
-
if (startupFailure === false || startupFailure == null) {
|
|
11396
|
-
return { tripped: false, count: state.count, halted: false };
|
|
11397
|
-
}
|
|
11398
|
-
const dec = bumpStartupFailure(state, Date.now(), { windowMs, burst });
|
|
11399
|
-
state.start = dec.start;
|
|
11400
|
-
state.count = dec.count;
|
|
11401
|
-
return { tripped: dec.tripped, count: state.count, halted: dec.tripped };
|
|
11402
|
-
},
|
|
11403
|
-
reset() {
|
|
11404
|
-
state = { start: null, count: 0 };
|
|
11405
|
-
}
|
|
11406
|
-
};
|
|
11407
|
-
return self;
|
|
11408
|
-
}
|
|
11409
|
-
module2.exports = { shouldGuard, bumpStartupFailure, makeBudget };
|
|
11410
|
-
}
|
|
11411
|
-
});
|
|
11412
|
-
|
|
11413
|
-
// src/app/main/startup-throttle.js
|
|
11414
|
-
var require_startup_throttle = __commonJS({
|
|
11415
|
-
"src/app/main/startup-throttle.js"(exports2, module2) {
|
|
11416
|
-
"use strict";
|
|
11417
|
-
var guardian = require_guardian();
|
|
11418
|
-
var pmClient = require_pm_client();
|
|
11419
|
-
var DEPS = /* @__PURE__ */ new WeakMap();
|
|
11420
|
-
function depsOf(host) {
|
|
11421
|
-
let d = DEPS.get(host);
|
|
11422
|
-
if (!d) {
|
|
11423
|
-
d = {
|
|
11424
|
-
config() {
|
|
11425
|
-
return host.config;
|
|
11426
|
-
},
|
|
11427
|
-
state() {
|
|
11428
|
-
return host.state;
|
|
11429
|
-
},
|
|
11430
|
-
events() {
|
|
11431
|
-
return host.events;
|
|
11432
|
-
},
|
|
11433
|
-
logger() {
|
|
11434
|
-
return host.logger;
|
|
11435
|
-
},
|
|
11436
|
-
ui() {
|
|
11437
|
-
return host.ui;
|
|
11438
|
-
},
|
|
11439
|
-
mStartupFailWindowStart() {
|
|
11440
|
-
return host._mStartupFailWindowStart();
|
|
11441
|
-
},
|
|
11442
|
-
mStartupFailCount() {
|
|
11443
|
-
return host._mStartupFailCount();
|
|
11444
|
-
},
|
|
11445
|
-
mSetStartupFailWindowStart(v) {
|
|
11446
|
-
return host._mSetStartupFailWindowStart(v);
|
|
11447
|
-
},
|
|
11448
|
-
mSetStartupFailCount(v) {
|
|
11449
|
-
return host._mSetStartupFailCount(v);
|
|
11450
|
-
}
|
|
11451
|
-
};
|
|
11452
|
-
DEPS.set(host, d);
|
|
11453
|
-
}
|
|
11454
|
-
return d;
|
|
11455
|
-
}
|
|
11456
|
-
module2.exports = {
|
|
11457
|
-
methods: {
|
|
11458
|
-
_noteStartupFailure() {
|
|
11459
|
-
const d = depsOf(this);
|
|
11460
|
-
const windowMs = d.config().startupFailWindowMs || 6e4;
|
|
11461
|
-
const dec = guardian.bumpStartupFailure(
|
|
11462
|
-
{ start: d.mStartupFailWindowStart(), count: d.mStartupFailCount() },
|
|
11463
|
-
Date.now(),
|
|
11464
|
-
{ windowMs, burst: d.config().startupFailBurst }
|
|
11465
|
-
);
|
|
11466
|
-
d.mSetStartupFailWindowStart(dec.start);
|
|
11467
|
-
d.mSetStartupFailCount(dec.count);
|
|
11468
|
-
if (!dec.tripped) return { failed: false, count: dec.count };
|
|
11469
|
-
d.state().setPhase("FAILED");
|
|
11470
|
-
d.events().append("startup_failed", {
|
|
11471
|
-
count: dec.count,
|
|
11472
|
-
windowMs,
|
|
11473
|
-
retry: "/lifecycle/dsh/restart"
|
|
11474
|
-
});
|
|
11475
|
-
d.logger().error("\u542F\u52A8\u5931\u8D25 " + dec.count + " \u6B21\uFF08\u7A97\u53E3 " + Math.round(windowMs / 1e3) + "s\uFF09\u2192 FAILED\uFF1A\u505C\u6B62\u81EA\u52A8\u91CD\u542F\uFF0C\u7B49\u5F85\u4EBA\u5DE5\u91CD\u8BD5\uFF08/lifecycle/dsh/restart\uFF09");
|
|
11476
|
-
d.ui().notify(
|
|
11477
|
-
"DSH \u542F\u52A8\u53CD\u590D\u5931\u8D25",
|
|
11478
|
-
dec.count + " \u6B21\u542F\u52A8\u5931\u8D25\uFF08" + Math.round(windowMs / 1e3) + "s \u5185\uFF09\uFF0C\u5DF2\u505C\u6B62\u81EA\u52A8\u91CD\u542F\uFF1B\u8BF7\u5728\u9762\u677F\u70B9\u300C\u91CD\u542F\u300D\u91CD\u8BD5"
|
|
11479
|
-
);
|
|
11480
|
-
return { failed: true, count: dec.count };
|
|
11481
|
-
},
|
|
11482
|
-
_retryStartupFailure() {
|
|
11483
|
-
const d = depsOf(this);
|
|
11484
|
-
d.mSetStartupFailWindowStart(null);
|
|
11485
|
-
d.mSetStartupFailCount(0);
|
|
11486
|
-
pmClient.resetBackoff("main");
|
|
11487
|
-
d.events().append("startup_retry", {});
|
|
11488
|
-
d.logger().warn("\u542F\u52A8\u5931\u8D25\u8BA1\u6570\u5DF2\u6E05\u96F6\uFF1A\u4EBA\u5DE5\u91CD\u8BD5\uFF0C\u56DE\u5230 STARTING");
|
|
11489
|
-
return { ok: true };
|
|
11490
|
-
}
|
|
11491
|
-
}
|
|
11492
|
-
};
|
|
11493
|
-
}
|
|
11494
|
-
});
|
|
11495
|
-
|
|
11496
|
-
// src/app/daemons/supervise.js
|
|
11497
|
-
var require_supervise = __commonJS({
|
|
11498
|
-
"src/app/daemons/supervise.js"(exports2, module2) {
|
|
11499
|
-
"use strict";
|
|
11500
|
-
var pidlook = require_pidlookup();
|
|
11501
|
-
var ROUTER_SUMMARY_TIMEOUT_MS = 5e3;
|
|
11502
|
-
var DEPS = /* @__PURE__ */ new WeakMap();
|
|
11503
|
-
function depsOf(host) {
|
|
11504
|
-
let d = DEPS.get(host);
|
|
11505
|
-
if (!d) {
|
|
11506
|
-
d = {
|
|
11507
|
-
stopping: () => host._stopping,
|
|
11508
|
-
exitIntended: () => host._exitIntended(),
|
|
11509
|
-
lifecycleManager: () => host.lifecycleManager,
|
|
11510
|
-
config: () => host.config,
|
|
11511
|
-
daemons: () => host.daemons,
|
|
11512
|
-
control: () => host.control,
|
|
11513
|
-
views: () => host.views,
|
|
11514
|
-
managedObjects: () => host.managedObjects,
|
|
11515
|
-
ctl: () => host.ctl,
|
|
11516
|
-
events: () => host.events,
|
|
11517
|
-
logger: () => host.logger
|
|
11518
|
-
};
|
|
11519
|
-
DEPS.set(host, d);
|
|
11520
|
-
}
|
|
11521
|
-
return d;
|
|
11522
|
-
}
|
|
11523
|
-
module2.exports = {
|
|
11524
|
-
methods: {
|
|
11525
|
-
async _daemonSuperviseOnce(kind) {
|
|
11526
|
-
const d = depsOf(this);
|
|
11527
|
-
if (d.stopping()) return { ok: false };
|
|
11528
|
-
if (d.exitIntended()) return { ok: false, error: "exit intended" };
|
|
11529
|
-
try {
|
|
11530
|
-
if (kind === "router") {
|
|
11531
|
-
const wantRunning = d.config().routerAutostart === true;
|
|
11532
|
-
const rlc = d.lifecycleManager() ? d.lifecycleManager().get("router") : null;
|
|
11533
|
-
if (!wantRunning) return { ok: d.daemons().routerActive() };
|
|
11534
|
-
if (!d.daemons().managed()) return { ok: d.daemons().routerActive() };
|
|
11535
|
-
const rlcx = d.daemons().lifecycle("router");
|
|
11536
|
-
if (rlcx && typeof rlcx.classify === "function") {
|
|
11537
|
-
const c = rlcx.classify();
|
|
11538
|
-
if (c && c.mode === "external") {
|
|
11539
|
-
d.logger() && d.logger().warn && d.logger().warn("[router] \u76D1\u7763\uFF1Actl " + d.ctl().routerPort() + " \u88AB\u5916\u90E8\u8FDB\u7A0B\u5360\u7528\uFF08pid=" + c.owner + "\uFF09\uFF0C\u4E0D\u63A5\u7BA1\u4E0D\u62C9\u8D77");
|
|
11540
|
-
return { ok: false };
|
|
11541
|
-
}
|
|
11542
|
-
}
|
|
11543
|
-
if (d.daemons().routerActive()) {
|
|
11544
|
-
try {
|
|
11545
|
-
d.control().syncRouterView({ ok: true });
|
|
11546
|
-
} catch (e) {
|
|
11547
|
-
d.logger() && d.logger().warn && d.logger().warn("router view sync: " + (e && e.message));
|
|
11548
|
-
}
|
|
11549
|
-
try {
|
|
11550
|
-
if (d.views().routerDaemonActive() && d.managedObjects()) {
|
|
11551
|
-
const s = await d.ctl().call(d.ctl().routerPort(), "domainSummary", [], ROUTER_SUMMARY_TIMEOUT_MS);
|
|
11552
|
-
const e = d.managedObjects().get("router-daemon");
|
|
11553
|
-
if (e && s && typeof s === "object") {
|
|
11554
|
-
e.domainSummary = Object.assign({ fetchedAt: Date.now() }, s);
|
|
11555
|
-
}
|
|
11556
|
-
}
|
|
11557
|
-
} catch (e2) {
|
|
11558
|
-
d.logger() && d.logger().debug && d.logger().debug("router \u57DF\u6458\u8981\u62C9\u53D6\u5931\u8D25: " + (e2 && e2.message || e2));
|
|
11559
|
-
}
|
|
11560
|
-
return { ok: true };
|
|
11561
|
-
}
|
|
11562
|
-
const rt2 = d.daemons().ensureRouterRuntime(true);
|
|
11563
|
-
if (rt2.mode === "daemon" && rt2.spawned) {
|
|
11564
|
-
d.events().append("router_daemon_supervised", { pid: rt2.spawned });
|
|
11565
|
-
if (d.logger() && d.logger().warn) d.logger().warn("[router] \u76D1\u7763\uFF1Arouter-daemon \u5931\u8054\uFF0C\u5DF2\u91CD\u65B0\u62C9\u8D77 pid=" + rt2.spawned);
|
|
11566
|
-
if (rlc) {
|
|
11567
|
-
rlc._setPhase("starting");
|
|
11568
|
-
}
|
|
11569
|
-
setTimeout(() => {
|
|
11570
|
-
const up = pidlook.findListeningPid(d.ctl().routerPort());
|
|
11571
|
-
try {
|
|
11572
|
-
d.control().syncRouterView({ ok: !!up, error: up ? null : "router-daemon \u62C9\u8D77\u540E\u672A\u5C31\u7EEA" });
|
|
11573
|
-
} catch (e) {
|
|
11574
|
-
d.logger() && d.logger().warn && d.logger().warn("router view sync: " + (e && e.message));
|
|
11575
|
-
}
|
|
11576
|
-
}, 3e3);
|
|
11577
|
-
} else if (rt2.mode === "error") {
|
|
11578
|
-
if (d.logger() && d.logger().warn) d.logger().warn("[router] \u76D1\u7763\u62C9\u8D77\u5931\u8D25: " + (rt2.error || "\u672A\u77E5"));
|
|
11579
|
-
}
|
|
11580
|
-
return { ok: false };
|
|
11581
|
-
}
|
|
11582
|
-
if (!d.daemons().enabled()) return { ok: d.daemons().lanActive() };
|
|
11583
|
-
d.daemons().syncLanState();
|
|
11584
|
-
if (d.daemons().lanActive()) return { ok: true };
|
|
11585
|
-
const rt = d.daemons().ensureLanRuntime(true);
|
|
11586
|
-
if (rt.mode === "daemon" && rt.spawned) {
|
|
11587
|
-
if (d.logger() && d.logger().warn) d.logger().warn("[lan] \u76D1\u7763\uFF1Alan-daemon \u5931\u8054\uFF0C\u5DF2\u91CD\u65B0\u62C9\u8D77 pid=" + rt.spawned);
|
|
11588
|
-
} else if (rt.mode === "error") {
|
|
11589
|
-
if (d.logger() && d.logger().warn) d.logger().warn("[lan] \u76D1\u7763\u62C9\u8D77\u5931\u8D25: " + (rt.error || "\u672A\u77E5"));
|
|
11590
|
-
}
|
|
11591
|
-
return { ok: false };
|
|
11592
|
-
} catch (e) {
|
|
11593
|
-
if (d.logger() && d.logger().warn) d.logger().warn("[" + kind + "] \u76D1\u7763\u5F02\u5E38: " + (e && e.message));
|
|
11594
|
-
return { ok: false };
|
|
11595
|
-
}
|
|
11596
|
-
}
|
|
11597
|
-
}
|
|
11598
|
-
};
|
|
11599
|
-
}
|
|
11600
|
-
});
|
|
11601
|
-
|
|
11602
11054
|
// src/app/daemons/process-wait.js
|
|
11603
11055
|
var require_process_wait = __commonJS({
|
|
11604
11056
|
"src/app/daemons/process-wait.js"(exports2, module2) {
|
|
@@ -12780,12 +12232,26 @@ var require_status = __commonJS({
|
|
|
12780
12232
|
"src/app/facade/status.js"(exports2, module2) {
|
|
12781
12233
|
"use strict";
|
|
12782
12234
|
var { installId } = require_install_id();
|
|
12235
|
+
function deriveState(host) {
|
|
12236
|
+
const nat = host.nativeManager ? host.nativeManager.status() : null;
|
|
12237
|
+
if (nat && nat.installed === false) return "uninstalled";
|
|
12238
|
+
if (host._mMissingNotified && host._mMissingNotified()) return "command_missing";
|
|
12239
|
+
const ph = String(host._mPhase() || "").toUpperCase();
|
|
12240
|
+
if (ph === "RUNNING") return "running";
|
|
12241
|
+
if (ph === "STARTING") return "starting";
|
|
12242
|
+
if (ph === "FAILED") return "failed";
|
|
12243
|
+
return "stopped";
|
|
12244
|
+
}
|
|
12783
12245
|
function statusSummary(host) {
|
|
12784
12246
|
const dshPidNow = host._mChild() ? host._mChild().pid : host._mAdoptPid();
|
|
12785
12247
|
return {
|
|
12786
12248
|
desired: host._mDesired(),
|
|
12787
12249
|
phase: host._mPhase(),
|
|
12788
|
-
|
|
12250
|
+
state: deriveState(host),
|
|
12251
|
+
sessionState: (function() {
|
|
12252
|
+
const p = String(host._mPhase() || "").toUpperCase();
|
|
12253
|
+
return p === "STARTING" || p === "RUNNING" ? "running" : "stopped";
|
|
12254
|
+
})(),
|
|
12789
12255
|
dataDirProtected: Array.isArray(host._fileProtectStatus) ? host._fileProtectStatus.length > 0 && host._fileProtectStatus.every((r) => r.ok) : null,
|
|
12790
12256
|
guardVersion: host.guardVersion,
|
|
12791
12257
|
installId: installId(),
|
|
@@ -12798,9 +12264,8 @@ var require_status = __commonJS({
|
|
|
12798
12264
|
startupFailCount: host._mStartupFailCount(),
|
|
12799
12265
|
lastFailure: host._mLastFailure(),
|
|
12800
12266
|
lastRestartAt: host._mLastRestartAt(),
|
|
12801
|
-
upgradeHold: host._upgradeHold,
|
|
12802
12267
|
shellHalted: host._shellHalted === true,
|
|
12803
|
-
commandMissing: !!(host.
|
|
12268
|
+
commandMissing: !!(host._mMissingNotified && host._mMissingNotified()),
|
|
12804
12269
|
dshTokenCaptured: !!(host.tokenService && host.tokenService.get("main")),
|
|
12805
12270
|
tasks: host.tasks ? host.tasks.running().map((t) => ({ id: t.id, kind: t.kind, action: t.action, target: t.target, state: t.state })) : [],
|
|
12806
12271
|
native: host.nativeManager ? host.nativeManager.status() : null,
|
|
@@ -14058,8 +13523,6 @@ var require_facets = __commonJS({
|
|
|
14058
13523
|
{ name: "main/process", mod: require_process2() },
|
|
14059
13524
|
{ name: "main/port-rederive", mod: require_port_rederive() },
|
|
14060
13525
|
{ name: "main/signals", mod: require_signals() },
|
|
14061
|
-
{ name: "main/startup-throttle", mod: require_startup_throttle() },
|
|
14062
|
-
{ name: "daemons/supervise", mod: require_supervise() },
|
|
14063
13526
|
{ name: "daemons/runtime", mod: require_runtime2() },
|
|
14064
13527
|
{ name: "daemons/identity", mod: require_identity() },
|
|
14065
13528
|
{ name: "daemons/probe", mod: require_probe4() },
|
|
@@ -15663,11 +15126,8 @@ var require_core5 = __commonJS({
|
|
|
15663
15126
|
host._ticking = false;
|
|
15664
15127
|
host.intents = new IntentLedger();
|
|
15665
15128
|
host._stopping = false;
|
|
15666
|
-
host._sessionState = "starting";
|
|
15667
15129
|
host._crashHalted = false;
|
|
15668
15130
|
host._shellHalted = false;
|
|
15669
|
-
host._upgradeHold = false;
|
|
15670
|
-
host._upgradeHoldSince = null;
|
|
15671
15131
|
host._timer = null;
|
|
15672
15132
|
host._beatScheduler = null;
|
|
15673
15133
|
host._heartbeatBusy = false;
|
|
@@ -16929,6 +16389,58 @@ var require_instance_lifecycle = __commonJS({
|
|
|
16929
16389
|
}
|
|
16930
16390
|
});
|
|
16931
16391
|
|
|
16392
|
+
// src/shared/guardian.js
|
|
16393
|
+
var require_guardian = __commonJS({
|
|
16394
|
+
"src/shared/guardian.js"(exports2, module2) {
|
|
16395
|
+
"use strict";
|
|
16396
|
+
function shouldGuard(inst) {
|
|
16397
|
+
return !!(inst && inst.guardian === true);
|
|
16398
|
+
}
|
|
16399
|
+
function bumpStartupFailure(w, now, cfg) {
|
|
16400
|
+
const windowMs = cfg && Number(cfg.windowMs) > 0 ? Number(cfg.windowMs) : 6e4;
|
|
16401
|
+
const burst = cfg && Number(cfg.burst) >= 1 ? Number(cfg.burst) : 5;
|
|
16402
|
+
let start = w.start;
|
|
16403
|
+
let count = w.count;
|
|
16404
|
+
if (start === null || start === void 0 || now - start > windowMs) {
|
|
16405
|
+
start = now;
|
|
16406
|
+
count = 1;
|
|
16407
|
+
} else {
|
|
16408
|
+
count += 1;
|
|
16409
|
+
}
|
|
16410
|
+
return { start, count, tripped: count >= burst };
|
|
16411
|
+
}
|
|
16412
|
+
function makeBudget(cfg) {
|
|
16413
|
+
const windowMs = cfg && Number(cfg.windowMs) > 0 ? Number(cfg.windowMs) : 6e4;
|
|
16414
|
+
const burst = cfg && Number(cfg.burst) >= 1 ? Number(cfg.burst) : 5;
|
|
16415
|
+
let state = { start: null, count: 0 };
|
|
16416
|
+
const self = {
|
|
16417
|
+
windowMs,
|
|
16418
|
+
burst,
|
|
16419
|
+
get count() {
|
|
16420
|
+
return state.count;
|
|
16421
|
+
},
|
|
16422
|
+
get tripped() {
|
|
16423
|
+
return state.count >= burst;
|
|
16424
|
+
},
|
|
16425
|
+
note(startupFailure) {
|
|
16426
|
+
if (startupFailure === false || startupFailure == null) {
|
|
16427
|
+
return { tripped: false, count: state.count, halted: false };
|
|
16428
|
+
}
|
|
16429
|
+
const dec = bumpStartupFailure(state, Date.now(), { windowMs, burst });
|
|
16430
|
+
state.start = dec.start;
|
|
16431
|
+
state.count = dec.count;
|
|
16432
|
+
return { tripped: dec.tripped, count: state.count, halted: dec.tripped };
|
|
16433
|
+
},
|
|
16434
|
+
reset() {
|
|
16435
|
+
state = { start: null, count: 0 };
|
|
16436
|
+
}
|
|
16437
|
+
};
|
|
16438
|
+
return self;
|
|
16439
|
+
}
|
|
16440
|
+
module2.exports = { shouldGuard, bumpStartupFailure, makeBudget };
|
|
16441
|
+
}
|
|
16442
|
+
});
|
|
16443
|
+
|
|
16932
16444
|
// src/domains/router/providers/restart.js
|
|
16933
16445
|
var require_restart = __commonJS({
|
|
16934
16446
|
"src/domains/router/providers/restart.js"(exports2, module2) {
|
|
@@ -24816,82 +24328,6 @@ var require_managed_object = __commonJS({
|
|
|
24816
24328
|
}
|
|
24817
24329
|
});
|
|
24818
24330
|
|
|
24819
|
-
// src/app/control/heartbeat.js
|
|
24820
|
-
var require_heartbeat = __commonJS({
|
|
24821
|
-
"src/app/control/heartbeat.js"(exports2, module2) {
|
|
24822
|
-
"use strict";
|
|
24823
|
-
var ADAPTER_TIMEOUT_TICKS = 6;
|
|
24824
|
-
function withTimeout(registry, p, ms, id) {
|
|
24825
|
-
let t = null;
|
|
24826
|
-
const timeout = new Promise((resolve) => {
|
|
24827
|
-
t = setTimeout(() => resolve({ __timedOut: true, ok: false, error: "\u76D1\u7763\u8D85\u65F6(" + ms + "ms)" }), ms);
|
|
24828
|
-
if (t && typeof t.unref === "function") t.unref();
|
|
24829
|
-
});
|
|
24830
|
-
return Promise.race([Promise.resolve(p).finally(() => {
|
|
24831
|
-
if (t) clearTimeout(t);
|
|
24832
|
-
}), timeout]).catch((e) => ({ ok: false, error: e && e.message || String(e) })).then((res) => {
|
|
24833
|
-
if (res && res.__timedOut) {
|
|
24834
|
-
registry._log("warn", "heartbeat \u76D1\u7763\u8D85\u65F6(" + id + ")\uFF1A\u5DF2\u8DF3\u8FC7\u672C\u62CD\uFF08\u9632\u5FC3\u8DF3\u505C\u6446\uFF09");
|
|
24835
|
-
}
|
|
24836
|
-
return res;
|
|
24837
|
-
});
|
|
24838
|
-
}
|
|
24839
|
-
async function runHeartbeat(registry, intervalMs) {
|
|
24840
|
-
if (registry._heartbeatInFlight) return registry._heartbeatInFlight;
|
|
24841
|
-
const beat = runBeat(registry, intervalMs);
|
|
24842
|
-
registry._heartbeatInFlight = beat;
|
|
24843
|
-
try {
|
|
24844
|
-
return await beat;
|
|
24845
|
-
} finally {
|
|
24846
|
-
if (registry._heartbeatInFlight === beat) registry._heartbeatInFlight = null;
|
|
24847
|
-
}
|
|
24848
|
-
}
|
|
24849
|
-
async function runBeat(registry, intervalMs) {
|
|
24850
|
-
const iv = intervalMs || 5e3;
|
|
24851
|
-
const now = Date.now();
|
|
24852
|
-
const observed = [];
|
|
24853
|
-
const errors = [];
|
|
24854
|
-
for (const e of registry._objects.slice()) {
|
|
24855
|
-
const ad = registry._adapters[e.kind];
|
|
24856
|
-
if (!ad) continue;
|
|
24857
|
-
const fn = typeof ad.supervise === "function" ? ad.supervise : typeof ad.observe === "function" ? ad.observe : null;
|
|
24858
|
-
if (!fn) continue;
|
|
24859
|
-
const tickEvery = ad.tickEvery || e.ownership && e.ownership.meta && e.ownership.meta.tickEvery || 1;
|
|
24860
|
-
if (tickEvery > 1) {
|
|
24861
|
-
if (e._nextTickAt && now < e._nextTickAt) continue;
|
|
24862
|
-
e._nextTickAt = Date.now() + tickEvery * iv;
|
|
24863
|
-
}
|
|
24864
|
-
try {
|
|
24865
|
-
const res = await withTimeout(registry, fn(e), iv * ADAPTER_TIMEOUT_TICKS, e.id);
|
|
24866
|
-
if (res && res.__timedOut) errors.push(e.id + ":" + (res.error || "\u76D1\u7763\u8D85\u65F6"));
|
|
24867
|
-
if (res && typeof res.ok === "boolean") {
|
|
24868
|
-
if (registry.get(e.id) !== e) continue;
|
|
24869
|
-
registry.applyObservation(e.id, res);
|
|
24870
|
-
if (ad.derivePhase === true) {
|
|
24871
|
-
const want = e.desired === "running";
|
|
24872
|
-
const p = want && res.ok ? "running" : "stopped";
|
|
24873
|
-
if (e.phase !== p) registry.setPhase(e.id, p);
|
|
24874
|
-
}
|
|
24875
|
-
}
|
|
24876
|
-
observed.push(e.id);
|
|
24877
|
-
} catch (err) {
|
|
24878
|
-
errors.push(e.id + ":" + (err && err.message || err));
|
|
24879
|
-
registry._log("warn", "heartbeat " + (ad.supervise ? "supervise" : "observe") + "(" + e.kind + ":" + e.id + "): " + (err && err.message || err));
|
|
24880
|
-
}
|
|
24881
|
-
}
|
|
24882
|
-
if (typeof registry.onBeatDone === "function") {
|
|
24883
|
-
try {
|
|
24884
|
-
await registry.onBeatDone({ observed, errors });
|
|
24885
|
-
} catch (err) {
|
|
24886
|
-
registry._log("warn", "heartbeat onBeatDone: " + (err && err.message || err));
|
|
24887
|
-
}
|
|
24888
|
-
}
|
|
24889
|
-
return { observed, errors };
|
|
24890
|
-
}
|
|
24891
|
-
module2.exports = { runHeartbeat, withTimeout, ADAPTER_TIMEOUT_TICKS };
|
|
24892
|
-
}
|
|
24893
|
-
});
|
|
24894
|
-
|
|
24895
24331
|
// src/app/control/registry.js
|
|
24896
24332
|
var require_registry4 = __commonJS({
|
|
24897
24333
|
"src/app/control/registry.js"(exports2, module2) {
|
|
@@ -24902,8 +24338,6 @@ var require_registry4 = __commonJS({
|
|
|
24902
24338
|
var { DESIRED, MANAGED_KINDS, kindMeta, registerKind: registerManagedKind, createEntry, normalizeOwnership } = require_managed_object();
|
|
24903
24339
|
var { legacyToEntryPhase } = require_phase();
|
|
24904
24340
|
var PHASES = ["stopped", "installing", "starting", "running", "draining", "failed"];
|
|
24905
|
-
var { runHeartbeat } = require_heartbeat();
|
|
24906
|
-
var pmClient = require_pm_client();
|
|
24907
24341
|
var configDefaults = require_config();
|
|
24908
24342
|
var RESTART_FALLBACK = { windowMs: 6e4, burst: 5 };
|
|
24909
24343
|
var restartDefaults = () => {
|
|
@@ -25045,7 +24479,6 @@ var require_registry4 = __commonJS({
|
|
|
25045
24479
|
this._save();
|
|
25046
24480
|
this._event("managed_object_registered", { kind: e.kind, id: e.id, name: e.name });
|
|
25047
24481
|
const rd = restartDefaults();
|
|
25048
|
-
pmClient.register({ id: e.id, spawn_cmd: [], restart_window_ms: rd.windowMs, restart_burst: rd.burst });
|
|
25049
24482
|
return e;
|
|
25050
24483
|
}
|
|
25051
24484
|
update(id, patch) {
|
|
@@ -25055,7 +24488,6 @@ var require_registry4 = __commonJS({
|
|
|
25055
24488
|
if (p.desired !== void 0) {
|
|
25056
24489
|
if (!DESIRED.includes(p.desired)) return { ok: false, error: "\u975E\u6CD5 desired: " + p.desired };
|
|
25057
24490
|
e.desired = p.desired;
|
|
25058
|
-
pmClient.setDesired(e.id, p.desired);
|
|
25059
24491
|
}
|
|
25060
24492
|
if (p.name !== void 0) e.name = String(p.name || e.id);
|
|
25061
24493
|
if (p.ownership !== void 0) {
|
|
@@ -25087,7 +24519,6 @@ var require_registry4 = __commonJS({
|
|
|
25087
24519
|
this._drop(e);
|
|
25088
24520
|
this._save();
|
|
25089
24521
|
this._event("managed_object_removed", { kind: e.kind, id: e.id });
|
|
25090
|
-
pmClient.setDesired(e.id, "stopped");
|
|
25091
24522
|
return { ok: true };
|
|
25092
24523
|
}
|
|
25093
24524
|
_releasePort(port, ownerId) {
|
|
@@ -25119,9 +24550,6 @@ var require_registry4 = __commonJS({
|
|
|
25119
24550
|
count() {
|
|
25120
24551
|
return this._objects.length;
|
|
25121
24552
|
}
|
|
25122
|
-
heartbeat(intervalMs) {
|
|
25123
|
-
return runHeartbeat(this, intervalMs);
|
|
25124
|
-
}
|
|
25125
24553
|
applyObservation(id, obs) {
|
|
25126
24554
|
const e = this.get(id);
|
|
25127
24555
|
if (!e) return null;
|
|
@@ -25152,7 +24580,6 @@ var require_registry4 = __commonJS({
|
|
|
25152
24580
|
e.lastTransitionAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
25153
24581
|
this._event("managed_object_phase", { kind: e.kind, id: e.id, phase: p });
|
|
25154
24582
|
this._save();
|
|
25155
|
-
pmClient.onPhase(e.id, p);
|
|
25156
24583
|
}
|
|
25157
24584
|
return e;
|
|
25158
24585
|
}
|
|
@@ -26347,9 +25774,6 @@ var require_domains = __commonJS({
|
|
|
26347
25774
|
});
|
|
26348
25775
|
host._syncManagedRegistry();
|
|
26349
25776
|
if (host.managedObjects && typeof host.managedObjects.registerAdapter === "function") {
|
|
26350
|
-
host.managedObjects.registerAdapter("router-daemon", { supervise: () => host._daemonSuperviseOnce("router"), tickEvery: 6, derivePhase: true });
|
|
26351
|
-
host.managedObjects.registerAdapter("lan-daemon", { supervise: () => host._daemonSuperviseOnce("lan"), tickEvery: 6, derivePhase: true });
|
|
26352
|
-
host.managedObjects.registerAdapter("dsh", { supervise: () => host._dshSuperviseOnce(), tickEvery: 1 });
|
|
26353
25777
|
host.managedObjects.registerAdapter("sandbox-instance", { supervise: (entry) => host._sandboxSuperviseOnce(entry), tickEvery: 1 });
|
|
26354
25778
|
}
|
|
26355
25779
|
if (host.managedObjects) host.managedObjects.onBeatDone = () => host.instances.governSweep();
|
|
@@ -26400,8 +25824,6 @@ var require_domains = __commonJS({
|
|
|
26400
25824
|
hooks: {
|
|
26401
25825
|
isDshActive: () => ["STARTING", "RUNNING"].includes(host._mPhase()),
|
|
26402
25826
|
desiredRunning: () => host._mDesired() === "running",
|
|
26403
|
-
stopForUpgrade: () => host._enterUpgradeHoldAsync(),
|
|
26404
|
-
resumeAfterUpgrade: () => host._exitUpgradeHold(true),
|
|
26405
25827
|
verifyDeadlineMs: () => Math.max(2 * host.config.startsecs * 1e3, 12e4),
|
|
26406
25828
|
notify: (t, b) => host.notify(t, b)
|
|
26407
25829
|
}
|