@fnndsc/cumin 3.15.1 → 3.16.0
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/cache/index.d.ts +6 -4
- package/dist/cache/index.js +11 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/listCache.d.ts +46 -0
- package/dist/cache/listCache.js +49 -0
- package/dist/cache/listCache.js.map +1 -1
- package/dist/cache/listCheckpoint.d.ts +52 -0
- package/dist/cache/listCheckpoint.js +150 -0
- package/dist/cache/listCheckpoint.js.map +1 -0
- package/dist/cache/procCache.d.ts +65 -2
- package/dist/cache/procCache.js +90 -31
- package/dist/cache/procCache.js.map +1 -1
- package/dist/cache/procCheckpoint.d.ts +48 -7
- package/dist/cache/procCheckpoint.js +291 -47
- package/dist/cache/procCheckpoint.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,15 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PROC_CHECKPOINT_FLOOR_MS = void 0;
|
|
3
4
|
exports.procCheckpointPath_get = procCheckpointPath_get;
|
|
5
|
+
exports.procCheckpointDir_get = procCheckpointDir_get;
|
|
4
6
|
exports.procCheckpoint_restore = procCheckpoint_restore;
|
|
7
|
+
exports.procCheckpointRoster_save = procCheckpointRoster_save;
|
|
8
|
+
exports.procCheckpointFeed_save = procCheckpointFeed_save;
|
|
5
9
|
exports.procCheckpoint_save = procCheckpoint_save;
|
|
6
10
|
exports.procCheckpoint_watch = procCheckpoint_watch;
|
|
7
11
|
/**
|
|
8
12
|
* @file Persistent checkpoints for the daemon process index.
|
|
9
13
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
14
|
+
* The checkpoint is a directory of shards under an identity-keyed,
|
|
15
|
+
* mode-0700 folder: `roster.json` (the feed index) and one `feed-<id>.json`
|
|
16
|
+
* per feed that holds topology. A mutation to one feed rewrites one shard,
|
|
17
|
+
* so a growing 80k-node feed never drags the whole index back to disk, and
|
|
18
|
+
* a torn write can damage at most one feed. Every file is mode 0600 and
|
|
19
|
+
* written with a same-directory atomic rename.
|
|
20
|
+
*
|
|
21
|
+
* Restore reads the roster and every shard, assembles one snapshot, and
|
|
22
|
+
* validates it whole before replacing live cache state — a shard whose feed
|
|
23
|
+
* is not in the roster is an orphan and is ignored. A legacy single-file v2
|
|
24
|
+
* checkpoint is read once and migrated into shards.
|
|
25
|
+
*
|
|
26
|
+
* The watcher persists what changed, throttled per shard: a shard is
|
|
27
|
+
* written no more than once per {@link PROC_CHECKPOINT_FLOOR_MS}, and never
|
|
28
|
+
* later than that after its first pending mutation.
|
|
13
29
|
*
|
|
14
30
|
* @module
|
|
15
31
|
*/
|
|
@@ -18,26 +34,47 @@ const fs_1 = require("fs");
|
|
|
18
34
|
const os_1 = require("os");
|
|
19
35
|
const path_1 = require("path");
|
|
20
36
|
const procCache_1 = require("./procCache");
|
|
21
|
-
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
const
|
|
37
|
+
const errorStack_1 = require("../error/errorStack");
|
|
38
|
+
// v3: per-feed shards. v2 (one file, instances with metrics) is still read
|
|
39
|
+
// for migration; v1 never carried metrics and is not read.
|
|
40
|
+
const PROC_CHECKPOINT_SCHEMA = 3;
|
|
41
|
+
const LEGACY_CHECKPOINT_SCHEMA = 2;
|
|
42
|
+
const ROSTER_FILE = 'roster.json';
|
|
43
|
+
const SHARD_PATTERN = /^feed-(\d+)\.json$/;
|
|
44
|
+
/** Minimum spacing between two writes of the same shard. */
|
|
45
|
+
exports.PROC_CHECKPOINT_FLOOR_MS = 30 * 1000;
|
|
26
46
|
/** Returns the default directory for persistent process-cache files. */
|
|
27
47
|
function procCheckpointRoot_get() {
|
|
28
48
|
const cacheHome = process.env.XDG_CACHE_HOME ?? (0, path_1.join)((0, os_1.homedir)(), '.cache');
|
|
29
49
|
return (0, path_1.join)(cacheHome, 'chell', 'proc');
|
|
30
50
|
}
|
|
51
|
+
/** Hashes an identity into a short, non-revealing directory key. */
|
|
52
|
+
function identityKey_get(identity) {
|
|
53
|
+
return (0, crypto_1.createHash)('sha256').update(identity).digest('hex').slice(0, 16);
|
|
54
|
+
}
|
|
31
55
|
/**
|
|
32
|
-
* Builds the
|
|
56
|
+
* Builds the legacy (v2, single-file) checkpoint path for an identity.
|
|
33
57
|
*
|
|
34
58
|
* @param identity - Canonical ChRIS identity string.
|
|
35
59
|
* @param root - Checkpoint directory override.
|
|
36
|
-
* @returns
|
|
60
|
+
* @returns The v2 file path, read only for migration.
|
|
37
61
|
*/
|
|
38
62
|
function procCheckpointPath_get(identity, root = procCheckpointRoot_get()) {
|
|
39
|
-
|
|
40
|
-
|
|
63
|
+
return (0, path_1.join)(root, `proc-${identityKey_get(identity)}-v${LEGACY_CHECKPOINT_SCHEMA}.json`);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Builds the identity-keyed checkpoint directory without exposing the identity.
|
|
67
|
+
*
|
|
68
|
+
* @param identity - Canonical ChRIS identity string.
|
|
69
|
+
* @param root - Checkpoint directory override.
|
|
70
|
+
* @returns The directory holding `roster.json` and the feed shards.
|
|
71
|
+
*/
|
|
72
|
+
function procCheckpointDir_get(identity, root = procCheckpointRoot_get()) {
|
|
73
|
+
return (0, path_1.join)(root, identityKey_get(identity));
|
|
74
|
+
}
|
|
75
|
+
/** Path of one feed's shard inside a checkpoint directory. */
|
|
76
|
+
function shardPath_get(dir, feedID) {
|
|
77
|
+
return (0, path_1.join)(dir, `feed-${feedID}.json`);
|
|
41
78
|
}
|
|
42
79
|
/** Reports whether a value is a finite integer. */
|
|
43
80
|
function integer_check(value) {
|
|
@@ -134,92 +171,299 @@ function procCacheSnapshot_check(value) {
|
|
|
134
171
|
}
|
|
135
172
|
return true;
|
|
136
173
|
}
|
|
137
|
-
/**
|
|
138
|
-
function
|
|
174
|
+
/** Shared header checks for any checkpoint file of the current schema. */
|
|
175
|
+
function header_check(value, identity) {
|
|
139
176
|
if (!value || typeof value !== 'object')
|
|
140
177
|
return false;
|
|
141
178
|
const file = value;
|
|
142
179
|
return file.schemaVersion === PROC_CHECKPOINT_SCHEMA &&
|
|
180
|
+
file.identity === identity &&
|
|
181
|
+
typeof file.writtenAt === 'string' &&
|
|
182
|
+
!Number.isNaN(Date.parse(file.writtenAt));
|
|
183
|
+
}
|
|
184
|
+
/** Reports whether parsed JSON is a compatible roster file for an identity. */
|
|
185
|
+
function rosterFile_check(value, identity) {
|
|
186
|
+
return header_check(value, identity) && Array.isArray(value.feeds);
|
|
187
|
+
}
|
|
188
|
+
/** Reports whether parsed JSON is a compatible shard file for an identity. */
|
|
189
|
+
function shardFile_check(value, identity) {
|
|
190
|
+
if (!header_check(value, identity))
|
|
191
|
+
return false;
|
|
192
|
+
const file = value;
|
|
193
|
+
return integer_check(file.feedID) && typeof file.loaded === 'boolean' && Array.isArray(file.instances);
|
|
194
|
+
}
|
|
195
|
+
/** Reports whether parsed JSON is a compatible legacy (v2) checkpoint for an identity. */
|
|
196
|
+
function legacyFile_check(value, identity) {
|
|
197
|
+
if (!value || typeof value !== 'object')
|
|
198
|
+
return false;
|
|
199
|
+
const file = value;
|
|
200
|
+
return file.schemaVersion === LEGACY_CHECKPOINT_SCHEMA &&
|
|
143
201
|
file.identity === identity &&
|
|
144
202
|
typeof file.writtenAt === 'string' &&
|
|
145
203
|
!Number.isNaN(Date.parse(file.writtenAt)) &&
|
|
146
204
|
procCacheSnapshot_check(file.snapshot);
|
|
147
205
|
}
|
|
206
|
+
/** Reads and parses one JSON file; null when it does not exist. */
|
|
207
|
+
async function json_read(path) {
|
|
208
|
+
try {
|
|
209
|
+
return JSON.parse(await fs_1.promises.readFile(path, 'utf8'));
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
if (error.code === 'ENOENT')
|
|
213
|
+
return null;
|
|
214
|
+
throw error;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/** Writes one mode-0600 JSON file through a same-directory atomic rename. */
|
|
218
|
+
async function json_write(path, value) {
|
|
219
|
+
const temporaryPath = `${path}.${process.pid}-${(0, crypto_1.randomUUID)()}.tmp`;
|
|
220
|
+
await fs_1.promises.writeFile(temporaryPath, `${JSON.stringify(value)}\n`, { encoding: 'utf8', mode: 0o600 });
|
|
221
|
+
await fs_1.promises.rename(temporaryPath, path);
|
|
222
|
+
await fs_1.promises.chmod(path, 0o600);
|
|
223
|
+
}
|
|
224
|
+
/** Ensures the checkpoint directory exists, private to the user. */
|
|
225
|
+
async function dir_ensure(dir) {
|
|
226
|
+
await fs_1.promises.mkdir(dir, { recursive: true, mode: 0o700 });
|
|
227
|
+
await fs_1.promises.chmod((0, path_1.dirname)(dir), 0o700);
|
|
228
|
+
await fs_1.promises.chmod(dir, 0o700);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Assembles the sharded checkpoint into one snapshot. Shards whose feed is
|
|
232
|
+
* absent from the roster are orphans (a feed removed after its shard was
|
|
233
|
+
* written) and are skipped; a shard that fails its own header check is
|
|
234
|
+
* skipped too, so one bad file costs one feed, not the checkpoint.
|
|
235
|
+
*
|
|
236
|
+
* @param dir - The checkpoint directory.
|
|
237
|
+
* @param identity - Canonical ChRIS identity string.
|
|
238
|
+
* @returns The assembled snapshot with its roster's write time, or null
|
|
239
|
+
* when there is no roster.
|
|
240
|
+
*/
|
|
241
|
+
async function shards_assemble(dir, identity) {
|
|
242
|
+
const roster = await json_read((0, path_1.join)(dir, ROSTER_FILE));
|
|
243
|
+
if (roster === null)
|
|
244
|
+
return null;
|
|
245
|
+
if (!rosterFile_check(roster, identity))
|
|
246
|
+
throw new Error('incompatible checkpoint');
|
|
247
|
+
if (!roster.feeds.every(procFeed_check))
|
|
248
|
+
throw new Error('incompatible checkpoint');
|
|
249
|
+
const feedIDs = new Set(roster.feeds.map((feed) => feed.id));
|
|
250
|
+
const snapshot = { feeds: roster.feeds, instances: [], topologyLoaded: [] };
|
|
251
|
+
let skipped = 0;
|
|
252
|
+
for (const name of await fs_1.promises.readdir(dir)) {
|
|
253
|
+
const match = SHARD_PATTERN.exec(name);
|
|
254
|
+
if (!match)
|
|
255
|
+
continue;
|
|
256
|
+
const feedID = Number(match[1]);
|
|
257
|
+
if (!feedIDs.has(feedID)) {
|
|
258
|
+
skipped++;
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
const shard = await json_read((0, path_1.join)(dir, name));
|
|
262
|
+
if (!shardFile_check(shard, identity) || shard.feedID !== feedID) {
|
|
263
|
+
skipped++;
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
snapshot.instances.push(...shard.instances);
|
|
267
|
+
if (shard.loaded)
|
|
268
|
+
snapshot.topologyLoaded.push(feedID);
|
|
269
|
+
}
|
|
270
|
+
if (skipped > 0) {
|
|
271
|
+
errorStack_1.errorStack.stack_push('warning', `proc checkpoint: ${skipped} feed shard(s) skipped (orphaned or unreadable)`);
|
|
272
|
+
}
|
|
273
|
+
return { snapshot, writtenAt: roster.writtenAt };
|
|
274
|
+
}
|
|
148
275
|
/**
|
|
149
276
|
* Restores a matching, fully validated checkpoint into the process cache.
|
|
277
|
+
* A sharded (v3) checkpoint is preferred; failing that, a legacy single-file
|
|
278
|
+
* v2 checkpoint is restored and migrated into shards.
|
|
150
279
|
*
|
|
151
280
|
* @param identity - Canonical ChRIS identity string.
|
|
152
281
|
* @param root - Checkpoint directory override.
|
|
153
282
|
* @returns Restoration outcome without throwing for absent or invalid files.
|
|
154
283
|
*/
|
|
155
284
|
async function procCheckpoint_restore(identity, root = procCheckpointRoot_get()) {
|
|
285
|
+
const dir = procCheckpointDir_get(identity, root);
|
|
156
286
|
try {
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
287
|
+
const assembled = await shards_assemble(dir, identity);
|
|
288
|
+
if (assembled) {
|
|
289
|
+
if (!procCacheSnapshot_check(assembled.snapshot)) {
|
|
290
|
+
return { restored: false, count: 0, reason: 'incompatible checkpoint' };
|
|
291
|
+
}
|
|
292
|
+
(0, procCache_1.procCache_get)().snapshot_restore(assembled.snapshot, assembled.writtenAt);
|
|
293
|
+
return { restored: true, count: assembled.snapshot.instances.length, writtenAt: assembled.writtenAt };
|
|
294
|
+
}
|
|
295
|
+
const legacy = await json_read(procCheckpointPath_get(identity, root));
|
|
296
|
+
if (legacy === null)
|
|
297
|
+
return { restored: false, count: 0, reason: 'no checkpoint' };
|
|
298
|
+
if (!legacyFile_check(legacy, identity)) {
|
|
160
299
|
return { restored: false, count: 0, reason: 'incompatible checkpoint' };
|
|
161
300
|
}
|
|
162
|
-
(0, procCache_1.procCache_get)().snapshot_restore(
|
|
163
|
-
|
|
301
|
+
(0, procCache_1.procCache_get)().snapshot_restore(legacy.snapshot, legacy.writtenAt);
|
|
302
|
+
await procCheckpoint_save(identity, root);
|
|
303
|
+
return { restored: true, count: legacy.snapshot.instances.length, writtenAt: legacy.writtenAt, migrated: true };
|
|
164
304
|
}
|
|
165
305
|
catch (error) {
|
|
166
|
-
const code = error.code;
|
|
167
306
|
return {
|
|
168
307
|
restored: false,
|
|
169
308
|
count: 0,
|
|
170
|
-
reason:
|
|
309
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
171
310
|
};
|
|
172
311
|
}
|
|
173
312
|
}
|
|
174
313
|
/**
|
|
175
|
-
*
|
|
314
|
+
* Whether the in-memory roster is internally consistent: every feed whose
|
|
315
|
+
* topology is loaded must exist in it. A cache violating that has been
|
|
316
|
+
* amputated in memory (observed: a transiently-empty public-feeds walk
|
|
317
|
+
* removed 641 feeds, and the watcher persisted the amputation over a good
|
|
318
|
+
* checkpoint). Never durably replace good data with it.
|
|
319
|
+
*
|
|
320
|
+
* @returns True when the roster may be written.
|
|
321
|
+
*/
|
|
322
|
+
function roster_isConsistent() {
|
|
323
|
+
const cache = (0, procCache_1.procCache_get)();
|
|
324
|
+
const rosterIDs = new Set(cache.feedIDs_get());
|
|
325
|
+
const orphaned = cache.shardedFeedIDs_get()
|
|
326
|
+
.filter((id) => cache.topologyLoaded_has(id) && !rosterIDs.has(id)).length;
|
|
327
|
+
if (orphaned > 0) {
|
|
328
|
+
errorStack_1.errorStack.stack_push('warning', `proc checkpoint skipped: ${orphaned} topology-loaded feeds missing from the roster (inconsistent snapshot)`);
|
|
329
|
+
return false;
|
|
330
|
+
}
|
|
331
|
+
return true;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Atomically writes the roster shard (the feed index) for an identity.
|
|
176
335
|
*
|
|
177
336
|
* @param identity - Canonical ChRIS identity string.
|
|
178
337
|
* @param root - Checkpoint directory override.
|
|
179
|
-
* @returns Promise resolved after the
|
|
338
|
+
* @returns Promise resolved after the file is durable in place; resolves
|
|
339
|
+
* without writing when the roster is inconsistent.
|
|
180
340
|
*/
|
|
181
|
-
async function
|
|
182
|
-
|
|
183
|
-
|
|
341
|
+
async function procCheckpointRoster_save(identity, root = procCheckpointRoot_get()) {
|
|
342
|
+
if (!roster_isConsistent())
|
|
343
|
+
return;
|
|
344
|
+
const dir = procCheckpointDir_get(identity, root);
|
|
345
|
+
await dir_ensure(dir);
|
|
346
|
+
const cache = (0, procCache_1.procCache_get)();
|
|
184
347
|
const file = {
|
|
185
348
|
schemaVersion: PROC_CHECKPOINT_SCHEMA,
|
|
186
349
|
identity,
|
|
187
350
|
writtenAt: new Date().toISOString(),
|
|
188
|
-
|
|
351
|
+
feeds: cache.feedIDs_get().map((id) => ({ ...cache.feed_get(id) })),
|
|
189
352
|
};
|
|
190
|
-
await
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
353
|
+
await json_write((0, path_1.join)(dir, ROSTER_FILE), file);
|
|
354
|
+
cache.checkpoint_mark(file.writtenAt);
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Atomically writes one feed's shard, or removes it when the feed no longer
|
|
358
|
+
* holds topology (removed from the roster, or emptied).
|
|
359
|
+
*
|
|
360
|
+
* @param identity - Canonical ChRIS identity string.
|
|
361
|
+
* @param feedID - The feed whose shard to write.
|
|
362
|
+
* @param root - Checkpoint directory override.
|
|
363
|
+
* @returns Promise resolved after the shard is durable in place.
|
|
364
|
+
*/
|
|
365
|
+
async function procCheckpointFeed_save(identity, feedID, root = procCheckpointRoot_get()) {
|
|
366
|
+
const dir = procCheckpointDir_get(identity, root);
|
|
367
|
+
const cache = (0, procCache_1.procCache_get)();
|
|
368
|
+
const snapshot = cache.feedSnapshot_create(feedID);
|
|
369
|
+
const path = shardPath_get(dir, feedID);
|
|
370
|
+
if (!cache.feed_get(feedID) || (snapshot.instances.length === 0 && !snapshot.loaded)) {
|
|
371
|
+
await fs_1.promises.rm(path, { force: true });
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
await dir_ensure(dir);
|
|
375
|
+
const file = {
|
|
376
|
+
schemaVersion: PROC_CHECKPOINT_SCHEMA,
|
|
377
|
+
identity,
|
|
378
|
+
writtenAt: new Date().toISOString(),
|
|
379
|
+
feedID,
|
|
380
|
+
loaded: snapshot.loaded,
|
|
381
|
+
instances: snapshot.instances,
|
|
382
|
+
};
|
|
383
|
+
await json_write(path, file);
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Saves the whole process cache: the roster and every feed shard, removing
|
|
387
|
+
* shards for feeds no longer in the roster.
|
|
388
|
+
*
|
|
389
|
+
* @param identity - Canonical ChRIS identity string.
|
|
390
|
+
* @param root - Checkpoint directory override.
|
|
391
|
+
* @returns Promise resolved after every file is durable in place; resolves
|
|
392
|
+
* without writing when the roster is inconsistent.
|
|
393
|
+
*/
|
|
394
|
+
async function procCheckpoint_save(identity, root = procCheckpointRoot_get()) {
|
|
395
|
+
if (!roster_isConsistent())
|
|
396
|
+
return;
|
|
397
|
+
const dir = procCheckpointDir_get(identity, root);
|
|
398
|
+
const cache = (0, procCache_1.procCache_get)();
|
|
399
|
+
await procCheckpointRoster_save(identity, root);
|
|
400
|
+
const wanted = new Set(cache.shardedFeedIDs_get());
|
|
401
|
+
for (const feedID of wanted)
|
|
402
|
+
await procCheckpointFeed_save(identity, feedID, root);
|
|
403
|
+
for (const name of await fs_1.promises.readdir(dir)) {
|
|
404
|
+
const match = SHARD_PATTERN.exec(name);
|
|
405
|
+
if (match && !wanted.has(Number(match[1])))
|
|
406
|
+
await fs_1.promises.rm((0, path_1.join)(dir, name), { force: true });
|
|
407
|
+
}
|
|
196
408
|
}
|
|
197
409
|
/**
|
|
198
|
-
* Starts a
|
|
410
|
+
* Starts a throttled, per-shard checkpoint writer for mutations to a
|
|
411
|
+
* current cache. Each touched shard is written at least `delayMs` after
|
|
412
|
+
* its first pending mutation and no more often than once per `floorMs`;
|
|
413
|
+
* a burst of mutations to one feed coalesces into one write, and a quiet
|
|
414
|
+
* feed's shard is never rewritten at all.
|
|
199
415
|
*
|
|
200
416
|
* @param identity - Canonical ChRIS identity string.
|
|
201
417
|
* @param root - Checkpoint directory override.
|
|
202
418
|
* @param delayMs - Debounce interval in milliseconds.
|
|
203
|
-
* @
|
|
419
|
+
* @param floorMs - Minimum spacing between two writes of the same shard.
|
|
420
|
+
* @returns Function that stops watching and cancels pending saves.
|
|
204
421
|
*/
|
|
205
|
-
function procCheckpoint_watch(identity, root = procCheckpointRoot_get(), delayMs = 1000) {
|
|
206
|
-
|
|
207
|
-
const
|
|
208
|
-
|
|
422
|
+
function procCheckpoint_watch(identity, root = procCheckpointRoot_get(), delayMs = 1000, floorMs = exports.PROC_CHECKPOINT_FLOOR_MS) {
|
|
423
|
+
const timers = new Map();
|
|
424
|
+
const lastWrite = new Map();
|
|
425
|
+
const shard_write = async (key) => {
|
|
426
|
+
if (key === 'roster')
|
|
427
|
+
await procCheckpointRoster_save(identity, root);
|
|
428
|
+
else if (key === 'all')
|
|
429
|
+
await procCheckpoint_save(identity, root);
|
|
430
|
+
else
|
|
431
|
+
await procCheckpointFeed_save(identity, key, root);
|
|
432
|
+
};
|
|
433
|
+
const shard_schedule = (key) => {
|
|
434
|
+
if (timers.has(key))
|
|
209
435
|
return;
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
timer = setTimeout(() => {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
436
|
+
const earliest = (lastWrite.get(key) ?? 0) + floorMs;
|
|
437
|
+
const wait = Math.max(delayMs, earliest - Date.now());
|
|
438
|
+
const timer = setTimeout(() => {
|
|
439
|
+
timers.delete(key);
|
|
440
|
+
lastWrite.set(key, Date.now());
|
|
441
|
+
void shard_write(key).catch(() => { });
|
|
442
|
+
}, wait);
|
|
216
443
|
timer.unref();
|
|
444
|
+
timers.set(key, timer);
|
|
445
|
+
};
|
|
446
|
+
const listener_remove = (0, procCache_1.procCache_get)().changeListener_add((change) => {
|
|
447
|
+
if ((0, procCache_1.procCache_get)().lifecycle_get().state !== 'current')
|
|
448
|
+
return;
|
|
449
|
+
if (change.scope === 'lifecycle')
|
|
450
|
+
return;
|
|
451
|
+
if (change.scope === 'all') {
|
|
452
|
+
for (const timer of timers.values())
|
|
453
|
+
clearTimeout(timer);
|
|
454
|
+
timers.clear();
|
|
455
|
+
shard_schedule('all');
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
if (timers.has('all'))
|
|
459
|
+
return;
|
|
460
|
+
shard_schedule(change.scope === 'roster' ? 'roster' : change.feedID);
|
|
217
461
|
});
|
|
218
462
|
return () => {
|
|
219
463
|
listener_remove();
|
|
220
|
-
|
|
464
|
+
for (const timer of timers.values())
|
|
221
465
|
clearTimeout(timer);
|
|
222
|
-
|
|
466
|
+
timers.clear();
|
|
223
467
|
};
|
|
224
468
|
}
|
|
225
469
|
//# sourceMappingURL=procCheckpoint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procCheckpoint.js","sourceRoot":"","sources":["../../src/cache/procCheckpoint.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"procCheckpoint.js","sourceRoot":"","sources":["../../src/cache/procCheckpoint.ts"],"names":[],"mappings":"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"}
|