@nxtedition/cache 2.1.29 → 2.1.31

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/README.md CHANGED
@@ -73,7 +73,7 @@ if (result.async) {
73
73
  | `ttl` | `number \| (value, key) => number` | `MAX_SAFE_INTEGER` | Time-to-live in milliseconds. After this, the entry is stale. |
74
74
  | `stale` | `number \| (value, key) => number` | `MAX_SAFE_INTEGER` | Stale-while-revalidate window in ms. After `ttl + stale`, the entry is purged. |
75
75
  | `memory` | `MemoryOptions \| false \| null` | `{ maxSize: 16MB, maxCount: 16384 }` | In-memory cache config, or `false`/`null` to disable. |
76
- | `database` | `DatabaseOptions \| false \| null` | `{ timeout: 20, maxSize: 128MB }` | SQLite config, or `false`/`null` to disable persistence. |
76
+ | `database` | `DatabaseOptions \| false \| null` | `{ timeout: 10, maxSize: 128MB }` | SQLite config, or `false`/`null` to disable persistence. |
77
77
  | `lock` | `false \| null` | enabled | Pass `false`/`null` to disable cross-thread SAB locking (see [Cross-Thread Locking](#cross-thread-locking)). Always off for `':memory:'`. |
78
78
  | `serializer` | `Serializer<V>` | JSON + ArrayBufferView passthrough | Custom `{ serialize, deserialize }` for value encoding. |
79
79
 
@@ -88,11 +88,12 @@ The in-memory tier uses a random-two-choice eviction strategy: when the cache is
88
88
 
89
89
  #### `DatabaseOptions`
90
90
 
91
- | Option | Type | Default | Description |
92
- | --------- | -------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
93
- | `timeout` | `number` | `20` | SQLite busy timeout in milliseconds. |
94
- | `maxSize` | `number` | `128 * 1024 * 1024` (128 MB) | Maximum total database size across all shards. Divided evenly per shard. Oldest entries are evicted when a shard is full. |
95
- | `shards` | `number` | `4` | Number of SQLite files (shards) the cache is spread across. See [File Sharding](#file-sharding). Use `1` for single-file. |
91
+ | Option | Type | Default | Description |
92
+ | ----------- | --------- | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
93
+ | `timeout` | `number` | `10` | SQLite busy timeout in milliseconds. |
94
+ | `maxSize` | `number` | `128 * 1024 * 1024` (128 MB) | Maximum total database size across all shards. Divided evenly per shard. Oldest entries are evicted when a shard is full. |
95
+ | `shards` | `number` | `4` | Number of SQLite files (shards) the cache is spread across. See [File Sharding](#file-sharding). Use `1` for a single shard. |
96
+ | `writeLock` | `boolean` | `true` | Serialize per-shard flush transactions across threads to avoid `SQLITE_BUSY`. See [Write Lock](#write-lock). |
96
97
 
97
98
  #### `Serializer<V>`
98
99
 
@@ -229,18 +230,20 @@ There is **no cross-process coordination** — two separate Node processes point
229
230
 
230
231
  The cache partitions its SQLite storage across N physical files (default `shards: 4`). Each key is hash-routed (via xxhash32) to one shard, and reads/writes for that key only touch that shard's connection. This is intended to reduce the SQLite writer-serialization ceiling: SQLite allows only one writer at a time per database file, even in WAL mode, so a single file caps concurrent-writer throughput at roughly one thread's worth of work regardless of how many threads the process spawns.
231
232
 
232
- **On-disk layout:**
233
+ **On-disk layout:** the layout is uniform across shard counts — every shard file embeds its index and the shard count.
233
234
 
234
- | `shards` | Files |
235
- | ----------- | -------------------------------------------------------------------- |
236
- | `1` | `<location>` (single file, legacy layout — compatible with `stat()`) |
237
- | `N` (N ≥ 2) | `<location>.0`, `<location>.1`, …, `<location>.{N-1}` |
235
+ | `shards` | Files |
236
+ | ----------- | ---------------------------------------------------------------------------------- |
237
+ | `1` | `<location>.0_1` |
238
+ | `N` (N ≥ 2) | `<location>.0_N`, `<location>.1_N`, …, `<location>.{N-1}_N` (shard count embedded) |
238
239
 
239
- With `shards: 1` the cache is a single file at the given `location`, identical to the pre-sharding layout — useful for backup scripts or observability tools that expect one file.
240
+ There is no special bare-`<location>` single-file form; `shards: 1` writes `<location>.0_1`.
240
241
 
241
242
  **Cross-instance consistency:** hash routing is deterministic (xxhash32 is pure), so two Cache instances pointing at the same `location` with the same `shards` count will route the same keys to the same shards. Data persists across instance restarts.
242
243
 
243
- **Changing `shards` discards old data.** Shard filenames embed the shard count, so opening a cache with `shards: 2` after previously using `shards: 4` starts from a fresh, empty file set and the constructor deletes the stale files from the previous configuration (they would otherwise leak disk forever, and switching back could resurrect entries that `delete()`/`clear()` had invalidated in the meantime).
244
+ **Changing `shards` discards old data.** Shard filenames embed the shard count, so opening a cache with `shards: 2` after previously using `shards: 4` starts from a fresh, empty file set. The constructor reclaims the stale file set of the previous configuration by **clearing** each file (dropping its cache tables via SQLite) and then unlinking it. Clearing first means switching back to the old count can never resurrect entries that `delete()`/`clear()` invalidated in the meantime — even if the unlink cannot remove the file — and, against a concurrently-live instance of that mismatched count, dropping its table is a safe cache flush (it re-populates from the `valueSelector`) rather than file-level corruption.
245
+
246
+ > Still, do not point two live instances with **different** shard counts at the same `location`: key routing and the per-`location` cross-thread lock both assume a single shard count per path, and on POSIX the reclaiming unlink can still ghost a live mismatched instance after its cache is flushed. A leftover bare `<location>` file written by a pre-uniform-layout version is never read and simply leaks — delete it manually if you need the space.
244
247
 
245
248
  **Per-shard state:** `maxSize` divides evenly across shards (`maxSize / shards` per shard), eviction runs per-shard on `SQLITE_FULL`, and `stats.database.size` is summed across all shards.
246
249
 
@@ -252,6 +255,18 @@ Flushes iterate shards starting at a random index on each call, so no single sha
252
255
 
253
256
  If a shard's database is full (`SQLITE_FULL`), the cache evicts the 256 oldest entries in that shard and retries up to 3 times. On other errors, the entire pending batch for that shard is dropped (items remain in the in-memory cache until natural eviction/TTL) and the error is emitted — this prevents error floods when the underlying failure is persistent (e.g. a read-only DB).
254
257
 
258
+ ## Write Lock
259
+
260
+ SQLite serializes writers: only one connection may write a given shard file at a time, even in WAL mode. When multiple worker threads in the same process flush the same shard concurrently, the losers' `BEGIN IMMEDIATE` returns `SQLITE_BUSY` and the flush falls into a retry loop (wasted `BEGIN`/`ROLLBACK` work, jittered re-arming, and synchronous `busy_timeout` stalls).
261
+
262
+ With `database.writeLock` (default **`true`**), each shard has a per-shard mutex in a small `SharedArrayBuffer` — a single `Int32` per shard (`0` = free, otherwise the holder's acquire timestamp), each padded to its own cache line to avoid false sharing. Before a flush opens its transaction it acquires the shard's lock; a thread that finds the lock held **defers** its flush (re-arming shortly) instead of attempting a doomed transaction. This turns optimistic-collide-and-retry into orderly hand-off, eliminating intra-process `SQLITE_BUSY` and improving multi-thread write throughput.
263
+
264
+ - **Threads only.** The `SharedArrayBuffer` is shared within a process, not across processes — separate processes writing the same files still rely on `timeout`/retry (see [Error Handling](#error-handling)).
265
+ - **Dead-holder safe.** If a holder is terminated mid-flush (e.g. `worker.terminate()`), the slot is reclaimed: a contender that finds it held longer than `max(2 × timeout, 50 ms)` (the worst legitimate hold is one `BEGIN IMMEDIATE` bounded by `busy_timeout` plus the commit) steals it. The DB's own `BEGIN IMMEDIATE` + `busy_timeout` remains the correctness guard, so a wrong steal merely degrades to the optimistic path.
266
+ - **Requires the cross-thread lock.** It is automatically off when `lock` is `false`/`null`, for `':memory:'`, or when the database tier is disabled. The synchronous drain (`flushSync()`/`close()`/`clear()`) bypasses it and keeps the existing optimistic + retry path.
267
+
268
+ Set `database: { writeLock: false }` to opt out.
269
+
255
270
  ## Error Handling
256
271
 
257
272
  `Cache` extends `EventEmitter`. Non-fatal errors (SQLite failures, stale revalidation failures, background-refresh rejections from the SWR fire-and-forget path) are emitted as `'error'` events when a listener is attached. If no `'error'` listener is registered, errors are surfaced via `process.emitWarning()` instead, avoiding unhandled crashes.
package/lib/index.d.ts CHANGED
@@ -5,6 +5,15 @@ export interface DatabaseOptions {
5
5
  timeout?: number;
6
6
  shards?: number;
7
7
  maxSize?: number;
8
+ /**
9
+ * Serialize flush transactions per shard across threads of this process via a
10
+ * `SharedArrayBuffer` mutex, so concurrent writers to the same shard defer
11
+ * instead of colliding on `BEGIN IMMEDIATE` (which surfaces `SQLITE_BUSY`).
12
+ * Defaults to `true`. Requires the cross-thread lock (no effect when
13
+ * `lock: false`/`null`, `:memory:`, or the database tier is disabled), and
14
+ * only coordinates threads — separate processes still rely on `timeout`/retry.
15
+ */
16
+ writeLock?: boolean;
8
17
  }
9
18
  export interface Serializer<V> {
10
19
  serialize: (value: V) => Buffer | Uint8Array | string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAS1C,OAAO,EAAsC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAEpF,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAiDhD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,UAAU,GAAG,MAAM,CAAA;IACrD,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,KAAK,CAAC,CAAA;CAC1C;AAaD,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;IAClD,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;IACpD,MAAM,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,IAAI,CAAA;IACrC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,eAAe,GAAG,KAAK,GAAG,IAAI,CAAA;IACzC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAC3B;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB;IAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACtC;IAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,CAAA;AAEtC,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,WAAW,EAAE,OAAO,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,EAAE,CAAA;CACtD;AAkJD,qBAAa,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,SAAS,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAE,SAAQ,YAAY;;gBAqDhF,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAClD,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,MAAM,EACpC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IAkNxB,IAAI,KAAK;;;;;;;;;;;sBACmB,MAAM;kBAAQ,MAAM,GAAG,SAAS;;;;MAsB3D;IAED,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB,SAAS;IAiBT,KAAK;IAwCL,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAO/B,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAOhC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAgBnC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI;IAYxB,KAAK,IAAI,IAAI;IAyCb,EAAE,IAAI,IAAI;CAgnBX;AA0DD,uCAAuC;AACvC,eAAO,MAAM,UAAU,cAAQ,CAAA;AAC/B,8CAA8C;AAC9C,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -50,7 +50,29 @@ const defaultSerializer = {
50
50
  };
51
51
  const VERSION = 6;
52
52
  const MAX_DURATION = 365000000e3;
53
+ const DEFAULT_DB_TIMEOUT = 10;
53
54
  const HASHER = await xxhash();
55
+ // Floor for the per-shard write-lock stale threshold (see #shardLockStaleMs):
56
+ // the longest a holder can legitimately hold a slot is one BEGIN IMMEDIATE
57
+ // (bounded by the SQLite busy_timeout) plus the batch write + COMMIT, so the
58
+ // threshold scales as 2× busy_timeout — but never below this floor, so a low or
59
+ // zero busy_timeout still lets the lock serialize (instead of every contender
60
+ // instantly judging the slot stale and stealing) and normal scheduling jitter on
61
+ // a sub-millisecond flush never triggers a false steal.
62
+ const SHARD_LOCK_STALE_FLOOR_MS = 50;
63
+ // Each shard's write lock is a SINGLE Int32 (0 = free, else the acquire
64
+ // timestamp), padded to its own cache line so a CAS on one shard's lock never
65
+ // invalidates a sibling shard's lock line (false sharing would defeat the point
66
+ // under the multi-thread write contention this lock targets). Packing the lock
67
+ // state and the timestamp into one word lets acquire stamp atomically in the CAS
68
+ // — a separate timestamp slot would leave a window where a contender reads a
69
+ // not-yet-written (or stale prior) stamp and false-steals a freshly-acquired
70
+ // lock. 64 bytes is the x86-64 cache line (the linux-x64 production target);
71
+ // Apple Silicon uses 128B lines, so two shards can still share a line on a
72
+ // dev/bench Mac — irrelevant in production.
73
+ const CACHE_LINE_BYTES = 64;
74
+ const SHARD_LOCK_BYTES = Math.max(CACHE_LINE_BYTES, Int32Array.BYTES_PER_ELEMENT);
75
+ const SHARD_LOCK_STRIDE = SHARD_LOCK_BYTES / Int32Array.BYTES_PER_ELEMENT;
54
76
  // Shared scratch array for bounded in-thread backoff sleeps: the value never
55
77
  // changes and nothing notifies it, so every wait simply times out after the
56
78
  // given duration. Hoisted so retry loops don't allocate a fresh
@@ -61,7 +83,7 @@ function sleepSync(ms) {
61
83
  }
62
84
  class DatabaseShard {
63
85
  location;
64
- databaseTimeout = 20;
86
+ databaseTimeout = 10;
65
87
  database;
66
88
  getQuery;
67
89
  delQuery;
@@ -73,7 +95,7 @@ class DatabaseShard {
73
95
  setBatch = [];
74
96
  constructor(location, opts) {
75
97
  this.location = location;
76
- this.databaseTimeout = opts?.timeout ?? 20;
98
+ this.databaseTimeout = opts?.timeout ?? DEFAULT_DB_TIMEOUT;
77
99
  for (let n = 0; true; n++) {
78
100
  try {
79
101
  this.database = new DatabaseSync(location, { timeout: this.databaseTimeout });
@@ -171,6 +193,8 @@ export class Cache extends EventEmitter {
171
193
  #stale;
172
194
  #serializer;
173
195
  #lockArray;
196
+ #shardLockArray = null;
197
+ #shardLockStaleMs = SHARD_LOCK_STALE_FLOOR_MS;
174
198
  #flushHandle = null;
175
199
  #location;
176
200
  #shards = null;
@@ -333,6 +357,10 @@ export class Cache extends EventEmitter {
333
357
  if (timeout !== undefined && (!Number.isInteger(timeout) || timeout < 0)) {
334
358
  throw new RangeError('database.timeout must be a non-negative integer');
335
359
  }
360
+ const writeLock = databaseOpts?.writeLock;
361
+ if (writeLock !== undefined && typeof writeLock !== 'boolean') {
362
+ throw new TypeError('database.writeLock must be a boolean');
363
+ }
336
364
  this.#shards = [];
337
365
  try {
338
366
  if (location === ':memory:') {
@@ -340,12 +368,31 @@ export class Cache extends EventEmitter {
340
368
  }
341
369
  else {
342
370
  for (let n = 0; n < count; n++) {
343
- this.#shards.push(new DatabaseShard(count === 1 ? location : location + '.' + n + '_' + count, {
371
+ // Every shard file embeds its index and the shard count
372
+ // (`<location>.<n>_<count>`), uniformly for all counts including 1.
373
+ // There is no special bare-`<location>` single-file layout.
374
+ this.#shards.push(new DatabaseShard(location + '.' + n + '_' + count, {
344
375
  ...databaseOpts,
345
376
  maxSize: Math.ceil((databaseOpts?.maxSize ?? 128 * 1024 * 1024) / count),
346
377
  }));
347
378
  }
348
379
  }
380
+ // Per-shard write-mutex SAB (database.writeLock, default on). Allocated
381
+ // INSIDE this try so a getOrCreate failure — e.g. a size mismatch when a
382
+ // different shard count previously opened this location, since the SAB
383
+ // size scales with `count` — disposes the shards just opened and degrades
384
+ // to memory-only via the catch below, instead of throwing out of the
385
+ // constructor with live SQLite connections/FDs leaked. Gated like the key
386
+ // lock (so it is null for :memory:, lock:false/null, db-disabled): one
387
+ // cache-line-padded Int32 per shard (0 = free, else acquire timestamp),
388
+ // shared by location so sibling instances/threads coordinate, by shard.
389
+ if (writeLock !== false && this.#lockArray !== null) {
390
+ this.#shardLockArray = new Int32Array(getOrCreate(`__@nxtedition/cache/${location}/wlock`, count * SHARD_LOCK_BYTES));
391
+ // Steal a slot only once a holder has outlasted the worst legitimate
392
+ // hold (one BEGIN IMMEDIATE bounded by busy_timeout, plus write+COMMIT):
393
+ // 2× busy_timeout, floored so a low/zero timeout still serializes.
394
+ this.#shardLockStaleMs = Math.max((databaseOpts?.timeout ?? DEFAULT_DB_TIMEOUT) * 2, SHARD_LOCK_STALE_FLOOR_MS);
395
+ }
349
396
  }
350
397
  catch (err) {
351
398
  for (const shard of this.#shards) {
@@ -365,36 +412,90 @@ export class Cache extends EventEmitter {
365
412
  // CAS slots and stall healthy threads for the full waitAsync timeout
366
413
  // with no value ever becoming visible to them.
367
414
  this.#lockArray = null;
415
+ this.#shardLockArray = null;
368
416
  this.#emitError(err);
369
417
  }
370
418
  if (this.#shards !== null && location !== ':memory:') {
371
- // Shard filenames embed the shard count, so files from a different
372
- // database.shards configuration of the same location are never opened
373
- // again they leak disk forever and, worse, switching back to the
374
- // old count would resurrect rows that delete()/clear() invalidated in
375
- // the current era. Best-effort unlink of stale siblings; per-file
376
- // failures (e.g. Windows EBUSY from a still-running old-config
377
- // process) are ignored it is only housekeeping of cache data.
419
+ // Reclaim files from a *different* database.shards configuration at this
420
+ // location. Shard filenames embed the count (`<location>.<n>_<count>`),
421
+ // so a file set from another count is never opened again — it leaks disk
422
+ // and, worse, switching back to the old count would resurrect rows that
423
+ // delete()/clear() invalidated in the current era.
424
+ //
425
+ // Each stale main shard file is CLEARED (its cache tables dropped via
426
+ // SQLite) and THEN unlinked:
427
+ // - Clearing first prevents resurrection robustly even when the unlink
428
+ // cannot remove the file (e.g. Windows EBUSY while another process
429
+ // holds it): the rows are gone, so a later open at that count finds an
430
+ // empty table. Against a concurrently-live instance of that mismatched
431
+ // count, dropping its table is a safe cache flush (it re-populates from
432
+ // the valueSelector), not the silent file-level corruption a bare
433
+ // unlink would cause.
434
+ // - Unlinking second reclaims the disk when it succeeds.
435
+ // All steps are best-effort; a foreign/locked/corrupt sibling is skipped.
436
+ //
437
+ // NOTE: mixing different `shards` counts at one live location is still
438
+ // unsupported (it breaks key routing and the per-location SAB lock); the
439
+ // unlink can still ghost a live mismatched instance on POSIX. A leftover
440
+ // bare `<location>` file from a pre-uniform-layout version is not matched
441
+ // here and simply leaks — it is never read, so it cannot resurrect data.
378
442
  try {
379
443
  const dir = path.dirname(location);
380
444
  const base = path.basename(location);
445
+ const staleMains = [];
446
+ const staleAux = [];
381
447
  for (const name of fs.readdirSync(dir)) {
382
448
  if (!name.startsWith(base)) {
383
449
  continue;
384
450
  }
385
- const rest = name.slice(base.length);
386
- const sharded = /^\.(\d+)_(\d+)(-wal|-shm)?$/.exec(rest);
387
- const stale = (sharded !== null && Number(sharded[2]) !== count) ||
388
- (count > 1 && /^(-wal|-shm)?$/.test(rest));
389
- if (stale) {
451
+ const sharded = /^\.(\d+)_(\d+)(-wal|-shm)?$/.exec(name.slice(base.length));
452
+ if (sharded === null || Number(sharded[2]) === count) {
453
+ continue;
454
+ }
455
+ // sharded[3] is '-wal'/'-shm' for auxiliary files, undefined for the
456
+ // main db file.
457
+ ;
458
+ (sharded[3] === undefined ? staleMains : staleAux).push(path.join(dir, name));
459
+ }
460
+ for (const file of staleMains) {
461
+ try {
462
+ const db = new DatabaseSync(file);
463
+ try {
464
+ db.exec('PRAGMA busy_timeout = 100');
465
+ const tables = db
466
+ .prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name LIKE 'cache_v%'")
467
+ .all();
468
+ for (const { name } of tables) {
469
+ db.exec(`DROP TABLE IF EXISTS "${String(name).replace(/"/g, '""')}"`);
470
+ }
471
+ }
472
+ finally {
473
+ db.close();
474
+ }
475
+ }
476
+ catch {
477
+ // Foreign/locked/corrupt sibling — skip clearing, still try unlink.
478
+ }
479
+ // Unlink the main file plus any -wal/-shm (including ones the clear
480
+ // above may have re-created).
481
+ for (const suffix of ['', '-wal', '-shm']) {
390
482
  try {
391
- fs.unlinkSync(path.join(dir, name));
483
+ fs.unlinkSync(file + suffix);
392
484
  }
393
485
  catch {
394
486
  // Best-effort housekeeping only.
395
487
  }
396
488
  }
397
489
  }
490
+ for (const file of staleAux) {
491
+ // Orphan -wal/-shm (its main already removed above is a no-op here).
492
+ try {
493
+ fs.unlinkSync(file);
494
+ }
495
+ catch {
496
+ // Best-effort housekeeping only.
497
+ }
498
+ }
398
499
  }
399
500
  catch {
400
501
  // readdir failures are non-fatal — the cache itself opened fine.
@@ -477,6 +578,10 @@ export class Cache extends EventEmitter {
477
578
  }
478
579
  }
479
580
  this.#shards = null;
581
+ // Drop the write-lock SAB reference so a closed instance stops pinning it
582
+ // (the registry is WeakRef-backed) — otherwise a later reconfigure to a
583
+ // different shard count on this location keeps hitting the size-mismatch.
584
+ this.#shardLockArray = null;
480
585
  globalThis.__nxt_cache = globalThis.__nxt_cache?.filter((ref) => ref.deref() != null && ref.deref() !== this);
481
586
  }
482
587
  get(...args) {
@@ -510,7 +615,9 @@ export class Cache extends EventEmitter {
510
615
  }
511
616
  const key = this.#keySelector(...args);
512
617
  if (typeof key !== 'string' || key.length === 0) {
513
- throw new TypeError('key must be a non-empty string');
618
+ // Same message as get()/peek()/refresh(): the key is derived from the
619
+ // keySelector here too, so the error names the keySelector, not the args.
620
+ throw new TypeError('keySelector must return a non-empty string');
514
621
  }
515
622
  const hash = this.#shards !== null || this.#lockArray !== null ? HASHER.h32(key) : 0;
516
623
  this.#set(key, undefined, hash);
@@ -825,7 +932,9 @@ export class Cache extends EventEmitter {
825
932
  #set(key, value, hash = HASHER.h32(key), acquired = false) {
826
933
  try {
827
934
  if (typeof key !== 'string' || key.length === 0) {
828
- throw new TypeError('key must be a non-empty string');
935
+ // Backstop only public callers (delete/#refresh) validate the
936
+ // keySelector-derived key first. Keep the message consistent with them.
937
+ throw new TypeError('keySelector must return a non-empty string');
829
938
  }
830
939
  // Drop any in-flight dedupe entry so an async refresh that resolves after
831
940
  // this call cannot resurrect a deleted key or overwrite a newer value —
@@ -939,6 +1048,40 @@ export class Cache extends EventEmitter {
939
1048
  }
940
1049
  }
941
1050
  }
1051
+ // Per-shard write mutex. Never blocks. The slot is a single Int32: 0 = free,
1052
+ // else the holder's acquire timestamp. Returns 1 = held (the caller owns the
1053
+ // slot and MUST release it) or 0 = held by a live sibling (defer this shard).
1054
+ // Lock state and timestamp are one word so acquisition stamps atomically — no
1055
+ // window where a contender sees held-but-not-yet-stamped and false-steals a
1056
+ // fresh holder. A slot whose stamp is older than #shardLockStaleMs is a dead
1057
+ // holder (e.g. a worker terminated mid-flush) and is stolen via a CAS on the
1058
+ // exact stale value, so only one contender wins the steal; the winner owns it
1059
+ // and releases normally, reclaiming the stuck slot. A wrong steal only degrades
1060
+ // to the optimistic path (both BEGIN IMMEDIATE; one gets SQLITE_BUSY and
1061
+ // retries) — the DB lock is the real guard.
1062
+ #acquireShardLock(si) {
1063
+ const arr = this.#shardLockArray;
1064
+ const slot = si * SHARD_LOCK_STRIDE;
1065
+ // Non-zero so the stamp is never mistaken for the free sentinel (0). The
1066
+ // 31-bit truncation only collides with 0 for ~1ms every ~24.8 days.
1067
+ const now = Date.now() & 0x7fffffff || 1;
1068
+ // Acquire a free slot, stamping it in the same CAS.
1069
+ if (Atomics.compareExchange(arr, slot, 0, now) === 0) {
1070
+ return 1;
1071
+ }
1072
+ // Held: steal only if the holder's stamp is stale (dead). CAS the exact
1073
+ // stale value so concurrent stealers can't both win.
1074
+ const held = Atomics.load(arr, slot);
1075
+ if (held !== 0 && ((now - held) & 0x7fffffff) > this.#shardLockStaleMs) {
1076
+ if (Atomics.compareExchange(arr, slot, held, now) === held) {
1077
+ return 1;
1078
+ }
1079
+ }
1080
+ return 0;
1081
+ }
1082
+ #releaseShardLock(si) {
1083
+ Atomics.store(this.#shardLockArray, si * SHARD_LOCK_STRIDE, 0);
1084
+ }
942
1085
  #flush = (sync = false) => {
943
1086
  this.#flushHandle = null;
944
1087
  const startTime = performance.now();
@@ -952,117 +1095,139 @@ export class Cache extends EventEmitter {
952
1095
  const shards = this.#shards ?? [];
953
1096
  const len = shards.length;
954
1097
  const idx = Math.floor(Math.random() * len);
1098
+ let deferred = false;
955
1099
  for (let k = 0; k < len; k++) {
956
- const shard = shards[(idx + k) % len];
1100
+ const si = (idx + k) % len;
1101
+ const shard = shards[si];
1102
+ // Per-shard write mutex (database.writeLock): serialize flush transactions
1103
+ // across threads in this process so concurrent writers to one shard defer
1104
+ // rather than collide on BEGIN IMMEDIATE. Async path only — the synchronous
1105
+ // drain (flushSync/close/clear) cannot wait, so it falls through to the
1106
+ // optimistic BEGIN + busy retry below.
1107
+ let heldShardLock = false;
1108
+ if (this.#shardLockArray !== null && !sync && !this.#closed && shard.setBatch.length > 0) {
1109
+ if (this.#acquireShardLock(si) === 0) {
1110
+ deferred = true;
1111
+ continue;
1112
+ }
1113
+ heldShardLock = true;
1114
+ }
957
1115
  try {
958
- for (let retryCount = 0; true; retryCount++) {
959
- if (shard.setBatch.length === 0) {
960
- break;
961
- }
962
- // The cache is closed but this shard still has batched items: the
963
- // database is disposed, so don't write — drop the batch and
964
- // release its SAB locks so colliding keys in other threads aren't
965
- // starved forever. Normally unreachable (close() drains via
966
- // flushSync and releases leftovers itself; deferred error emission
967
- // means user code can't close mid-loop), kept as a cheap guard so
968
- // a closed cache can never be written to. The values remain served
969
- // from memory until the orphaned MemoryCache is collected, the
970
- // same trade-off as other flush-failure drops.
971
- if (this.#closed) {
972
- this.#releaseBatch(shard.setBatch.splice(0));
973
- break;
974
- }
975
- let n = 0;
976
- try {
977
- shard.database.exec('BEGIN IMMEDIATE');
978
- while (n < shard.setBatch.length) {
979
- const { key, data, stale, expire } = shard.setBatch[n++];
980
- // #set only ever enqueues value writes (deletes are applied
981
- // inline via delQuery and never pushed), and serialize() returns
982
- // a non-null Buffer/Uint8Array/string, so every batched item is a
983
- // setQuery write — there is no enqueued-delete marker.
984
- shard.setQuery.run(key, data, stale, expire);
1116
+ try {
1117
+ for (let retryCount = 0; true; retryCount++) {
1118
+ if (shard.setBatch.length === 0) {
1119
+ break;
985
1120
  }
986
- shard.database.exec('COMMIT');
987
- this.#releaseBatch(shard.setBatch.splice(0, n));
988
- break;
989
- }
990
- catch (err) {
991
- // ROLLBACK is required: a failed statement leaves the connection with
992
- // an open transaction; without it the next BEGIN would throw.
993
- // On SQLITE_FULL, SQLite automatically rolls back the transaction, so
994
- // the explicit ROLLBACK may fail with "no transaction is active" — ignore it.
995
- try {
996
- shard.database.exec('ROLLBACK');
1121
+ // The cache is closed but this shard still has batched items: the
1122
+ // database is disposed, so don't write — drop the batch and
1123
+ // release its SAB locks so colliding keys in other threads aren't
1124
+ // starved forever. Normally unreachable (close() drains via
1125
+ // flushSync and releases leftovers itself; deferred error emission
1126
+ // means user code can't close mid-loop), kept as a cheap guard so
1127
+ // a closed cache can never be written to. The values remain served
1128
+ // from memory until the orphaned MemoryCache is collected, the
1129
+ // same trade-off as other flush-failure drops.
1130
+ if (this.#closed) {
1131
+ this.#releaseBatch(shard.setBatch.splice(0));
1132
+ break;
997
1133
  }
998
- catch {
999
- // already rolled back automatically
1000
- // TODO (fix): Check that the error is what we expect (something like "no transaction is active")...
1134
+ let n = 0;
1135
+ try {
1136
+ shard.database.exec('BEGIN IMMEDIATE');
1137
+ while (n < shard.setBatch.length) {
1138
+ const { key, data, stale, expire } = shard.setBatch[n++];
1139
+ // #set only ever enqueues value writes (deletes are applied
1140
+ // inline via delQuery and never pushed), and serialize() returns
1141
+ // a non-null Buffer/Uint8Array/string, so every batched item is a
1142
+ // setQuery write — there is no enqueued-delete marker.
1143
+ shard.setQuery.run(key, data, stale, expire);
1144
+ }
1145
+ shard.database.exec('COMMIT');
1146
+ this.#releaseBatch(shard.setBatch.splice(0, n));
1147
+ break;
1001
1148
  }
1002
- if (err?.errcode === 5 /* SQLITE_BUSY */ && !this.#closed) {
1003
- if (sync) {
1004
- // Synchronous drain (flushSync/close/clear): we cannot yield to
1005
- // let the async setTimeout retry run, so rescheduling here would
1006
- // spin the event loop forever under a sustained external writer
1007
- // lock (BEGIN IMMEDIATE keeps returning BUSY). Back off briefly
1008
- // in-thread and retry a bounded number of times; if contention
1009
- // persists, give up for this shard — drop its batch (releasing
1010
- // the locks so waiters aren't starved) rather than hang the
1011
- // event loop. The values remain served from memory, the same
1012
- // trade-off as for non-BUSY flush errors below.
1013
- if (retryCount < 16) {
1014
- sleepSync(5);
1015
- continue;
1149
+ catch (err) {
1150
+ // ROLLBACK is required: a failed statement leaves the connection with
1151
+ // an open transaction; without it the next BEGIN would throw.
1152
+ // On SQLITE_FULL, SQLite automatically rolls back the transaction, so
1153
+ // the explicit ROLLBACK may fail with "no transaction is active" — ignore it.
1154
+ try {
1155
+ shard.database.exec('ROLLBACK');
1156
+ }
1157
+ catch {
1158
+ // already rolled back automatically
1159
+ // TODO (fix): Check that the error is what we expect (something like "no transaction is active")...
1160
+ }
1161
+ if (err?.errcode === 5 /* SQLITE_BUSY */ && !this.#closed) {
1162
+ if (sync) {
1163
+ // Synchronous drain (flushSync/close/clear): we cannot yield to
1164
+ // let the async setTimeout retry run, so rescheduling here would
1165
+ // spin the event loop forever under a sustained external writer
1166
+ // lock (BEGIN IMMEDIATE keeps returning BUSY). Back off briefly
1167
+ // in-thread and retry a bounded number of times; if contention
1168
+ // persists, give up for this shard — drop its batch (releasing
1169
+ // the locks so waiters aren't starved) rather than hang the
1170
+ // event loop. The values remain served from memory, the same
1171
+ // trade-off as for non-BUSY flush errors below.
1172
+ if (retryCount < 16) {
1173
+ sleepSync(5);
1174
+ continue;
1175
+ }
1176
+ this.#emitError(err);
1177
+ this.#releaseBatch(shard.setBatch.splice(0));
1178
+ break;
1016
1179
  }
1180
+ // Re-arm BEFORE emitting and uncork while parked:
1181
+ // - Re-arm first so a re-entrant flushSync()/close()/clear()
1182
+ // from an 'error' listener sees a live #flushHandle and can
1183
+ // dispose it and drain synchronously. With the old order the
1184
+ // listener ran in a window where #flushHandle was null while
1185
+ // setBatch was still populated — close() leaked the batch's
1186
+ // SAB lock slots forever, and clear() wiped the DB only for
1187
+ // the later retry to COMMIT the old batch and resurrect the
1188
+ // cleared values.
1189
+ // - Uncork because this retry chain has no cap: under a
1190
+ // sustained external writer lock it can park for minutes
1191
+ // while reads and writes keep inserting into the memory
1192
+ // cache. #prune is the only maxSize/maxCount enforcement and
1193
+ // is disabled while corked, so holding the cork here means
1194
+ // unbounded heap growth for as long as the contention lasts.
1195
+ // The timer callback re-corks, keeping the pairing with the
1196
+ // tail uncork exact (a #set arriving while the timer is
1197
+ // pending sees #flushHandle non-null and does not cork).
1198
+ this.#flushHandle = setTimeout(() => {
1199
+ this.#memory?.cork();
1200
+ this.#flush();
1201
+ }, (Math.random() * 10) | 0);
1202
+ this.#memory?.uncork();
1017
1203
  this.#emitError(err);
1018
- this.#releaseBatch(shard.setBatch.splice(0));
1019
- break;
1204
+ return;
1205
+ }
1206
+ else if (err?.errcode === 13 /* SQLITE_FULL */ &&
1207
+ retryCount < 3) {
1208
+ shard.evictQuery.run(256);
1209
+ }
1210
+ else {
1211
+ // Intentional: drop the rolled-back items from the batch and surface
1212
+ // the error via #emitError below. The corresponding entries remain in
1213
+ // #memory until natural eviction/TTL, which is fine for cache semantics
1214
+ // — callers already accept that cache values can disappear at any time.
1215
+ // Do NOT flag this as silent data loss (see closed issue #167).
1216
+ this.#releaseBatch(shard.setBatch.splice(0, n));
1217
+ throw err;
1020
1218
  }
1021
- // Re-arm BEFORE emitting and uncork while parked:
1022
- // - Re-arm first so a re-entrant flushSync()/close()/clear()
1023
- // from an 'error' listener sees a live #flushHandle and can
1024
- // dispose it and drain synchronously. With the old order the
1025
- // listener ran in a window where #flushHandle was null while
1026
- // setBatch was still populated — close() leaked the batch's
1027
- // SAB lock slots forever, and clear() wiped the DB only for
1028
- // the later retry to COMMIT the old batch and resurrect the
1029
- // cleared values.
1030
- // - Uncork because this retry chain has no cap: under a
1031
- // sustained external writer lock it can park for minutes
1032
- // while reads and writes keep inserting into the memory
1033
- // cache. #prune is the only maxSize/maxCount enforcement and
1034
- // is disabled while corked, so holding the cork here means
1035
- // unbounded heap growth for as long as the contention lasts.
1036
- // The timer callback re-corks, keeping the pairing with the
1037
- // tail uncork exact (a #set arriving while the timer is
1038
- // pending sees #flushHandle non-null and does not cork).
1039
- this.#flushHandle = setTimeout(() => {
1040
- this.#memory?.cork();
1041
- this.#flush();
1042
- }, (Math.random() * 10) | 0);
1043
- this.#memory?.uncork();
1044
- this.#emitError(err);
1045
- return;
1046
- }
1047
- else if (err?.errcode === 13 /* SQLITE_FULL */ &&
1048
- retryCount < 3) {
1049
- shard.evictQuery.run(256);
1050
- }
1051
- else {
1052
- // Intentional: drop the rolled-back items from the batch and surface
1053
- // the error via #emitError below. The corresponding entries remain in
1054
- // #memory until natural eviction/TTL, which is fine for cache semantics
1055
- // — callers already accept that cache values can disappear at any time.
1056
- // Do NOT flag this as silent data loss (see closed issue #167).
1057
- this.#releaseBatch(shard.setBatch.splice(0, n));
1058
- throw err;
1059
1219
  }
1060
1220
  }
1061
1221
  }
1222
+ catch (err) {
1223
+ this.#releaseBatch(shard.setBatch.splice(0));
1224
+ this.#emitError(err);
1225
+ }
1062
1226
  }
1063
- catch (err) {
1064
- this.#releaseBatch(shard.setBatch.splice(0));
1065
- this.#emitError(err);
1227
+ finally {
1228
+ if (heldShardLock) {
1229
+ this.#releaseShardLock(si);
1230
+ }
1066
1231
  }
1067
1232
  // The 10ms budget yields to the event loop so a multi-shard flush
1068
1233
  // doesn't starve other work. It is meaningless during a synchronous
@@ -1077,6 +1242,18 @@ export class Cache extends EventEmitter {
1077
1242
  return;
1078
1243
  }
1079
1244
  }
1245
+ // A shard was skipped because a sibling thread held its write lock. Re-arm
1246
+ // shortly to retry it. Uncork while parked (mirroring the BUSY path) so a
1247
+ // sustained contention chain can't hold the cork and disable pruning; the
1248
+ // timer re-corks, keeping the cork/uncork pairing exact.
1249
+ if (deferred && !sync && !this.#closed && this.#flushHandle === null) {
1250
+ this.#flushHandle = setTimeout(() => {
1251
+ this.#memory?.cork();
1252
+ this.#flush();
1253
+ }, (Math.random() * 2) | 0);
1254
+ this.#memory?.uncork();
1255
+ return;
1256
+ }
1080
1257
  this.#memory?.uncork();
1081
1258
  };
1082
1259
  #createEntry(key, value, stale, expire, size) {
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxtedition/cache",
3
- "version": "2.1.29",
3
+ "version": "2.1.31",
4
4
  "type": "module",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -22,7 +22,7 @@
22
22
  "test:coverage": "node --test --experimental-test-coverage"
23
23
  },
24
24
  "dependencies": {
25
- "@nxtedition/shared": "^5.1.19",
25
+ "@nxtedition/shared": "^5.1.20",
26
26
  "xxhash-wasm": "^1.1.0"
27
27
  },
28
28
  "devDependencies": {
@@ -32,5 +32,5 @@
32
32
  "tsd": "^0.33.0",
33
33
  "typescript": "^5.9.3"
34
34
  },
35
- "gitHead": "dc2d73e1b3411eea1c1e14fbecaaece60b2192b0"
35
+ "gitHead": "ac1ee32c77948c8b01ced0fb705cf9c862ce04eb"
36
36
  }