@optimystic/db-p2p 0.25.1 → 0.27.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.
Files changed (107) hide show
  1. package/dist/src/cluster/certified-claims.d.ts +17 -3
  2. package/dist/src/cluster/certified-claims.d.ts.map +1 -1
  3. package/dist/src/cluster/certified-claims.js +5 -3
  4. package/dist/src/cluster/certified-claims.js.map +1 -1
  5. package/dist/src/cluster/cluster-repo.d.ts +57 -92
  6. package/dist/src/cluster/cluster-repo.d.ts.map +1 -1
  7. package/dist/src/cluster/cluster-repo.js +149 -201
  8. package/dist/src/cluster/cluster-repo.js.map +1 -1
  9. package/dist/src/cluster/commit-proof.d.ts +16 -0
  10. package/dist/src/cluster/commit-proof.d.ts.map +1 -1
  11. package/dist/src/cluster/commit-proof.js +32 -1
  12. package/dist/src/cluster/commit-proof.js.map +1 -1
  13. package/dist/src/cluster/quorum-restore.d.ts +81 -28
  14. package/dist/src/cluster/quorum-restore.d.ts.map +1 -1
  15. package/dist/src/cluster/quorum-restore.js +148 -51
  16. package/dist/src/cluster/quorum-restore.js.map +1 -1
  17. package/dist/src/cluster/race-resolution.d.ts +89 -0
  18. package/dist/src/cluster/race-resolution.d.ts.map +1 -0
  19. package/dist/src/cluster/race-resolution.js +140 -0
  20. package/dist/src/cluster/race-resolution.js.map +1 -0
  21. package/dist/src/cluster/reconcile-block.d.ts +9 -4
  22. package/dist/src/cluster/reconcile-block.d.ts.map +1 -1
  23. package/dist/src/cluster/reconcile-block.js +28 -11
  24. package/dist/src/cluster/reconcile-block.js.map +1 -1
  25. package/dist/src/cluster/record-operations.d.ts +25 -0
  26. package/dist/src/cluster/record-operations.d.ts.map +1 -0
  27. package/dist/src/cluster/record-operations.js +56 -0
  28. package/dist/src/cluster/record-operations.js.map +1 -0
  29. package/dist/src/cohort-topic/host.d.ts +133 -51
  30. package/dist/src/cohort-topic/host.d.ts.map +1 -1
  31. package/dist/src/cohort-topic/host.js +290 -83
  32. package/dist/src/cohort-topic/host.js.map +1 -1
  33. package/dist/src/libp2p-node-base.d.ts +13 -4
  34. package/dist/src/libp2p-node-base.d.ts.map +1 -1
  35. package/dist/src/libp2p-node-base.js +5 -5
  36. package/dist/src/libp2p-node-base.js.map +1 -1
  37. package/dist/src/repo/cluster-coordinator.d.ts +9 -0
  38. package/dist/src/repo/cluster-coordinator.d.ts.map +1 -1
  39. package/dist/src/repo/cluster-coordinator.js +13 -2
  40. package/dist/src/repo/cluster-coordinator.js.map +1 -1
  41. package/dist/src/repo/coordinator-repo.d.ts +34 -2
  42. package/dist/src/repo/coordinator-repo.d.ts.map +1 -1
  43. package/dist/src/repo/coordinator-repo.js +57 -3
  44. package/dist/src/repo/coordinator-repo.js.map +1 -1
  45. package/dist/src/storage/block-latch.d.ts +5 -4
  46. package/dist/src/storage/block-latch.d.ts.map +1 -1
  47. package/dist/src/storage/block-latch.js +5 -4
  48. package/dist/src/storage/block-latch.js.map +1 -1
  49. package/dist/src/storage/block-storage.d.ts +1 -1
  50. package/dist/src/storage/block-storage.d.ts.map +1 -1
  51. package/dist/src/storage/block-storage.js +11 -3
  52. package/dist/src/storage/block-storage.js.map +1 -1
  53. package/dist/src/storage/cached-raw-storage.d.ts +17 -1
  54. package/dist/src/storage/cached-raw-storage.d.ts.map +1 -1
  55. package/dist/src/storage/cached-raw-storage.js +8 -1
  56. package/dist/src/storage/cached-raw-storage.js.map +1 -1
  57. package/dist/src/storage/cached-store-driver.d.ts +7 -0
  58. package/dist/src/storage/cached-store-driver.d.ts.map +1 -1
  59. package/dist/src/storage/cached-store-driver.js +20 -0
  60. package/dist/src/storage/cached-store-driver.js.map +1 -1
  61. package/dist/src/storage/i-block-storage.d.ts +45 -2
  62. package/dist/src/storage/i-block-storage.d.ts.map +1 -1
  63. package/dist/src/storage/i-block-storage.js +29 -0
  64. package/dist/src/storage/i-block-storage.js.map +1 -1
  65. package/dist/src/storage/i-raw-storage.d.ts +16 -0
  66. package/dist/src/storage/i-raw-storage.d.ts.map +1 -1
  67. package/dist/src/storage/kv-raw-storage.d.ts +5 -1
  68. package/dist/src/storage/kv-raw-storage.d.ts.map +1 -1
  69. package/dist/src/storage/kv-raw-storage.js +8 -1
  70. package/dist/src/storage/kv-raw-storage.js.map +1 -1
  71. package/dist/src/storage/raw-store-driver.d.ts +15 -0
  72. package/dist/src/storage/raw-store-driver.d.ts.map +1 -1
  73. package/dist/src/storage/shared-cache-pool.d.ts +5 -0
  74. package/dist/src/storage/shared-cache-pool.d.ts.map +1 -1
  75. package/dist/src/storage/shared-cache-pool.js +6 -1
  76. package/dist/src/storage/shared-cache-pool.js.map +1 -1
  77. package/dist/src/storage/storage-repo.d.ts.map +1 -1
  78. package/dist/src/storage/storage-repo.js +141 -99
  79. package/dist/src/storage/storage-repo.js.map +1 -1
  80. package/dist/src/storage/with-read-cache.d.ts +9 -5
  81. package/dist/src/storage/with-read-cache.d.ts.map +1 -1
  82. package/dist/src/storage/with-read-cache.js +16 -6
  83. package/dist/src/storage/with-read-cache.js.map +1 -1
  84. package/package.json +2 -2
  85. package/{README.md → readme.md} +2 -2
  86. package/src/cluster/certified-claims.ts +22 -9
  87. package/src/cluster/cluster-repo.ts +199 -212
  88. package/src/cluster/commit-proof.ts +38 -2
  89. package/src/cluster/quorum-restore.ts +183 -56
  90. package/src/cluster/race-resolution.ts +158 -0
  91. package/src/cluster/reconcile-block.ts +34 -11
  92. package/src/cluster/record-operations.ts +59 -0
  93. package/src/cohort-topic/host.ts +423 -118
  94. package/src/libp2p-node-base.ts +18 -9
  95. package/src/repo/cluster-coordinator.ts +1039 -1027
  96. package/src/repo/coordinator-repo.ts +1937 -1855
  97. package/src/storage/block-latch.ts +5 -4
  98. package/src/storage/block-storage.ts +11 -3
  99. package/src/storage/cached-raw-storage.ts +21 -1
  100. package/src/storage/cached-store-driver.ts +23 -0
  101. package/src/storage/i-block-storage.ts +47 -2
  102. package/src/storage/i-raw-storage.ts +17 -0
  103. package/src/storage/kv-raw-storage.ts +8 -1
  104. package/src/storage/raw-store-driver.ts +26 -0
  105. package/src/storage/shared-cache-pool.ts +6 -1
  106. package/src/storage/storage-repo.ts +143 -103
  107. package/src/storage/with-read-cache.ts +16 -6
@@ -25,11 +25,15 @@ export declare class KvRawStorage implements IRawStorage {
25
25
  * (`typeof storage.listBlockIds === 'function'`) sees the driver's true
26
26
  * capability instead of a stub that silently reports 0 / no seed. The same rule
27
27
  * governs `getStoreIdentity`: a stub returning `undefined` would make every store
28
- * look identity-less to consumers that dedupe on it.
28
+ * look identity-less to consumers that dedupe on it. `readCached` follows the same rule
29
+ * for the same reason: it is set only when the driver reports a read cache at or below
30
+ * itself, so `withReadCache` sees whether this composition is REALLY already cached
31
+ * rather than inferring it from a concrete class name (see {@link IRawStorage.readCached}).
29
32
  */
30
33
  listBlockIds?: () => AsyncIterable<BlockId>;
31
34
  getApproximateBytesUsed?: () => Promise<number>;
32
35
  getStoreIdentity?: () => StoreIdentity;
36
+ readCached?: true;
33
37
  constructor(driver: RawStoreDriver);
34
38
  getMetadata(blockId: BlockId): Promise<BlockMetadata | undefined>;
35
39
  saveMetadata(blockId: BlockId, metadata: BlockMetadata): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"kv-raw-storage.d.ts","sourceRoot":"","sources":["../../../src/storage/kv-raw-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAa,YAAW,WAAW;IAanC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZnC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,uBAAuB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,gBAAgB,CAAC,EAAE,MAAM,aAAa,CAAC;gBAEV,MAAM,EAAE,cAAc;IAc7C,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAejE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAKzE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7E,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC;IAc5F,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAK3F,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjG,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC;IAMnE,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAKpF,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1F,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKnF,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrF,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKvF,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1F,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAGpF"}
1
+ {"version":3,"file":"kv-raw-storage.d.ts","sourceRoot":"","sources":["../../../src/storage/kv-raw-storage.ts"],"names":[],"mappings":"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"}
@@ -20,11 +20,15 @@ export class KvRawStorage {
20
20
  * (`typeof storage.listBlockIds === 'function'`) sees the driver's true
21
21
  * capability instead of a stub that silently reports 0 / no seed. The same rule
22
22
  * governs `getStoreIdentity`: a stub returning `undefined` would make every store
23
- * look identity-less to consumers that dedupe on it.
23
+ * look identity-less to consumers that dedupe on it. `readCached` follows the same rule
24
+ * for the same reason: it is set only when the driver reports a read cache at or below
25
+ * itself, so `withReadCache` sees whether this composition is REALLY already cached
26
+ * rather than inferring it from a concrete class name (see {@link IRawStorage.readCached}).
24
27
  */
25
28
  listBlockIds;
26
29
  getApproximateBytesUsed;
27
30
  getStoreIdentity;
31
+ readCached;
28
32
  constructor(driver) {
29
33
  this.driver = driver;
30
34
  if (driver.storeIdentity) {
@@ -36,6 +40,9 @@ export class KvRawStorage {
36
40
  if (driver.approximateBytesUsed) {
37
41
  this.getApproximateBytesUsed = () => driver.approximateBytesUsed();
38
42
  }
43
+ if (driver.readCached) {
44
+ this.readCached = true;
45
+ }
39
46
  }
40
47
  // --- Metadata ---
41
48
  async getMetadata(blockId) {
@@ -1 +1 @@
1
- {"version":3,"file":"kv-raw-storage.js","sourceRoot":"","sources":["../../../src/storage/kv-raw-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kv-raw-storage.js","sourceRoot":"","sources":["../../../src/storage/kv-raw-storage.ts"],"names":[],"mappings":"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"}
@@ -100,6 +100,21 @@ export interface RawStoreDriver {
100
100
  * - It identifies the STORE, not its contents.
101
101
  */
102
102
  storeIdentity?(): StoreIdentity;
103
+ /**
104
+ * Optional — present (and only ever `true`) when a write-through read cache
105
+ * (`CachedStoreDriver`) sits AT or BELOW this driver, so a composition seam can ask
106
+ * "is this already read-cached?" of the composition itself instead of guessing from a
107
+ * concrete class name. Set unconditionally by `CachedStoreDriver` (it *is* the cache) and
108
+ * passed up by every wrapper that fronts a driver, the same way `storeIdentity` is.
109
+ *
110
+ * A property, not a method: there is no behavior to invoke, only a fact to report.
111
+ *
112
+ * OPTIONAL BY DESIGN, and typed as the literal `true` so "present and false" is
113
+ * unrepresentable — truthiness IS the feature detection. Never install a `false` stub: an
114
+ * uncached driver must omit the property entirely, exactly as `storeIdentity` /
115
+ * `listBlockIds` / `approximateBytesUsed` are omitted when unsupported.
116
+ */
117
+ readCached?: true;
103
118
  /** Optional — enumerate block ids with durable metadata (startup seed). Passed through by the kernel. */
104
119
  listBlockIds?(): AsyncIterable<BlockId>;
105
120
  /** Optional — best cheap byte estimate. Passed through by the kernel. */
@@ -1 +1 @@
1
- {"version":3,"file":"raw-store-driver.d.ts","sourceRoot":"","sources":["../../../src/storage/raw-store-driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raw-store-driver.d.ts","sourceRoot":"","sources":["../../../src/storage/raw-store-driver.ts"],"names":[],"mappings":"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"}
@@ -207,6 +207,11 @@ export declare class SharedCachePool {
207
207
  * a log line is not a way to notice. A registration with no identity is unaffected: it
208
208
  * registers exactly as it always did.
209
209
  *
210
+ * This catches the SIDE-BY-SIDE pair only. A cache stacked over an already-cached inner is a
211
+ * different (merely redundant) failure and is refused earlier, in `CachedStoreDriver`'s
212
+ * constructor, so it never reaches here with the wrong story — see the two `readCached`
213
+ * guards in `packages/db-p2p/docs/storage.md`.
214
+ *
210
215
  * The check runs BEFORE any mutation, so a refused registration leaves the pool exactly as it
211
216
  * was — no store row, no consumed id, no claim.
212
217
  *
@@ -1 +1 @@
1
- {"version":3,"file":"shared-cache-pool.d.ts","sourceRoot":"","sources":["../../../src/storage/shared-cache-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared-cache-pool.d.ts","sourceRoot":"","sources":["../../../src/storage/shared-cache-pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC9B,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,OAAO;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC;IACT,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,MAAM,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAI3B,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAClC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS;IAV7C,KAAK,SAAK;IACV,OAAO,SAAK;gBAEF,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GAAG,SAAS;IAClC;;;;OAIG;IACM,QAAQ,GAAE,aAAa,GAAG,SAAqB;CAEzD;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,6GAA6G;IAC7G,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,sGAAsG;IACtG,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpF;AAED,MAAM,WAAW,sBAAsB;IACtC,iIAAiI;IACjI,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yGAAyG;IACzG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;CACzB;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,qBAAa,eAAe;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAK;IAErB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IACrD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAgC;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;IAErE,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAK;gBAET,OAAO,CAAC,EAAE,sBAAsB;IAQ5C,IAAI,QAAQ,IAAI,MAAM,CAA+B;IACrD,IAAI,UAAU,IAAI,MAAM,CAAiC;IACzD,IAAI,KAAK,IAAI,MAAM,CAA4B;IAC/C,IAAI,OAAO,IAAI,MAAM,CAA8B;IAEnD;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYnE;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,gBAAgB;IAgBzE;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAe/C,6HAA6H;IAC7H,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAO3C,yIAAyI;IACzI,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM;IAMpG;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQ/B;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAkB7B,oGAAoG;IACpG,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK7B;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAWlD;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK5B,KAAK,IAAI,cAAc;IAqBvB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,MAAM;IAUd,4FAA4F;IAC5F,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,SAAS;CAOjB;AA4BD;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,CAGlD"}
@@ -139,6 +139,11 @@ export class SharedCachePool {
139
139
  * a log line is not a way to notice. A registration with no identity is unaffected: it
140
140
  * registers exactly as it always did.
141
141
  *
142
+ * This catches the SIDE-BY-SIDE pair only. A cache stacked over an already-cached inner is a
143
+ * different (merely redundant) failure and is refused earlier, in `CachedStoreDriver`'s
144
+ * constructor, so it never reaches here with the wrong story — see the two `readCached`
145
+ * guards in `packages/db-p2p/docs/storage.md`.
146
+ *
142
147
  * The check runs BEFORE any mutation, so a refused registration leaves the pool exactly as it
143
148
  * was — no store row, no consumed id, no claim.
144
149
  *
@@ -150,7 +155,7 @@ export class SharedCachePool {
150
155
  throw new Error(`two caches over one backing store never converge: ${JSON.stringify(identity)} is already `
151
156
  + `cached (label ${JSON.stringify(claimed.label ?? null)}); this registration `
152
157
  + `(label ${JSON.stringify(label ?? null)}) would be a second, independent view. Share one `
153
- + `CachedRawStorage — withReadCache does this for you — or dispose the first.`);
158
+ + `read cache — withReadCache does this for you — or dispose the first.`);
154
159
  }
155
160
  const handle = new CacheStoreHandle(`s${++this.storeCounter}`, label, identity);
156
161
  this.stores.set(handle.id, handle);
@@ -1 +1 @@
1
- {"version":3,"file":"shared-cache-pool.js","sourceRoot":"","sources":["../../../src/storage/shared-cache-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared-cache-pool.js","sourceRoot":"","sources":["../../../src/storage/shared-cache-pool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage-repo.d.ts","sourceRoot":"","sources":["../../../src/storage/storage-repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage-repo.d.ts","sourceRoot":"","sources":["../../../src/storage/storage-repo.ts"],"names":[],"mappings":"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"}
@@ -405,6 +405,8 @@ export class StorageRepo {
405
405
  reason: validation.reason ?? 'Transaction validation failed'
406
406
  };
407
407
  }
408
+ // Already deduped: `blockIdsForTransforms` builds its result through a Set. So the pass-2 save
409
+ // loop below cannot write one block twice, and the echoed `blockIds` carries no duplicate.
408
410
  const blockIds = blockIdsForTransforms(request.transforms);
409
411
  log('pend actionId=%s blockIds=%d rev=%s', request.actionId, blockIds.length, request.rev);
410
412
  const pendings = [];
@@ -416,117 +418,157 @@ export class StorageRepo {
416
418
  // Blocks this action ALREADY committed at exactly the requested revision — the durable half
417
419
  // of a torn action whose retry reuses the same actionId. Sibling of the `alreadyDone`
418
420
  // partition in `commit` below: satisfied, not merely non-stale, so no pending is recorded
419
- // for them (see the fan-out at the end of this method).
421
+ // for them (see pass 2).
420
422
  const satisfied = new Set();
421
- // Potential race condition: A concurrent commit operation could complete
422
- // between the conflict checks (latest.rev, listPendingTransactions) and the
423
- // savePendingTransaction call below. This pend operation might succeed based on
424
- // stale information, but the subsequent commit for this pend would likely
425
- // fail correctly later if a conflict arose. Locking here could make the initial
426
- // check more accurate but adds overhead. The current approach prioritizes
427
- // letting the commit be the final arbiter.
428
- for (const blockId of blockIds) {
429
- const blockStorage = this.createBlockStorage(blockId);
430
- const transforms = transformForBlockId(request.transforms, blockId);
431
- // Handle any conflicting revisions FIRST: a block this same action already committed at
432
- // exactly the requested revision is satisfied, and skips both this check and the
433
- // pending-action listing below.
434
- if (request.rev !== undefined || transforms.insert) {
435
- const latest = await blockStorage.getLatest();
436
- // Our own already-durable work, met again by a retry (see {@link isOwnRevision}):
437
- // treating it as a stale rival would refuse the writer with its own commit.
438
- // NOTE: a rev-less pend (`request.rev === undefined`, an insert-only claim) can
439
- // never match, so a torn action retried WITHOUT a revision is still refused by its
440
- // own insert. No production caller sends one `TransactorSource.transact` and the
441
- // multi-collection coordinator both require a rev so this is unreachable today;
442
- // if a rev-less write path ever appears, match on `latest.actionId` alone here.
443
- if (isOwnRevision(latest, request.rev, request.actionId)) {
444
- satisfied.add(blockId);
445
- continue;
446
- }
447
- if (latest && latest.rev >= (request.rev ?? 0)) {
448
- // Only a real revision race yields a meaningful `staleAt`. When `request.rev` is
449
- // undefined this same branch fires for an insert collision (the comparison degrades
450
- // to `latest.rev >= 0`, true for any existing block), and reporting that block's
451
- // revision would be a number that answers a question nobody asked.
452
- if (request.rev !== undefined) {
453
- staleAt = highestStaleAt([staleAt, { blockId, rev: latest.rev }]);
423
+ // Blocks observed at or past the requested revision under a DIFFERENT action — a real stale
424
+ // loss. Counted separately from `missing` because the two are not the same question: `missing`
425
+ // is the catch-up the loser is handed, and a node whose revision index is sparse over
426
+ // [request.rev, latest.rev] hands back an empty one while still having lost. Gating the
427
+ // refusal on the enumeration would then let a block pass classification that pass 2 cannot
428
+ // write (`savePendingTransaction` refuses it), turning a stale answer into a throw. `commit`
429
+ // takes the same position it pushes a `missedCommits` entry "even if transforms is empty,
430
+ // because we want to reject the older version".
431
+ let staleCount = 0;
432
+ // Classifying and saving are ONE atomic step per pend: both passes below run inside a single
433
+ // multi-block write-latch hold, so no commit can land between deciding a block is pendable
434
+ // and writing its pending record. That is the whole property a pend never writes a pending
435
+ // record for a revision already taken. Such a record could never be promoted (`commit`
436
+ // partitions the block as already-done or refuses it as stale, and promotion is the only
437
+ // thing that removes a record on the success path), and would then be reported as a
438
+ // conflicting in-flight action to every later writer of the block. See docs/repository.md,
439
+ // Invariant P; `BlockStorage.savePendingTransaction` refuses such a write outright.
440
+ //
441
+ // TWO passes, not one interleaved loop: with a single loop a block refused partway through
442
+ // would leave records already written for its predecessors, and retracting those under the
443
+ // hold could delete a record an EARLIER pend of the same action legitimately left. Classify
444
+ // everything before writing anything, and no record is ever written that must be taken back.
445
+ //
446
+ // Everything inside the hold is local storage I/O. No network I/O and no caller-supplied
447
+ // code may enter it — `checkPendValidation` above can call the caller's validation hook,
448
+ // which is precisely why it stays outside. `commit` keeps the same rule. Acquiring through
449
+ // `acquireBlockWriteLatches` (deduped, sorted) is what keeps the three multi-latch holders —
450
+ // this, `commit`, and `applyInvalidation` free of deadlock, and no caller of `pend`
451
+ // (`ClusterRepo`, `CoordinatorRepo`, `service.ts`) holds a block latch, so the hold cannot
452
+ // re-enter itself.
453
+ //
454
+ // NOTE: a pend now blocks concurrent commits on its blocks for the span of BOTH passes, not
455
+ // just its writes. Accepted: every call inside is local storage I/O, and `commit` already
456
+ // holds the same set for a comparable span. If pend latency on contended blocks ever shows
457
+ // up in a profile, two things inside the hold scale with width and are the ones to look at:
458
+ // the policy-'r' arm reads one transform per rival, and pass 2 awaits its saves one block at
459
+ // a time (where the pre-latch code fanned out with `Promise.all`). Sequential is the
460
+ // deliberate choice — a throw mid-pass then strands records for FEWER blocks, not more — so
461
+ // batch or fan out only with that tradeoff in hand.
462
+ const { latches, release } = await acquireBlockWriteLatches(blockIds);
463
+ try {
464
+ // --- Pass 1: classify. Every read below runs under the hold. ---
465
+ for (const blockId of blockIds) {
466
+ const blockStorage = this.createBlockStorage(blockId);
467
+ const transforms = transformForBlockId(request.transforms, blockId);
468
+ // Handle any conflicting revisions FIRST: a block this same action already committed at
469
+ // exactly the requested revision is satisfied, and skips both this check and the
470
+ // pending-action listing below.
471
+ if (request.rev !== undefined || transforms.insert) {
472
+ const latest = await blockStorage.getLatest();
473
+ // Our own already-durable work, met again by a retry (see {@link isOwnRevision}):
474
+ // treating it as a stale rival would refuse the writer with its own commit.
475
+ // NOTE: a rev-less pend (`request.rev === undefined`, an insert-only claim) can
476
+ // never match, so a torn action retried WITHOUT a revision is still refused by its
477
+ // own insert. No production caller sends one — `TransactorSource.transact` and the
478
+ // multi-collection coordinator both require a rev — so this is unreachable today;
479
+ // if a rev-less write path ever appears, match on `latest.actionId` alone here.
480
+ if (isOwnRevision(latest, request.rev, request.actionId)) {
481
+ satisfied.add(blockId);
482
+ continue;
454
483
  }
455
- const transforms = await asyncIteratorToArray(blockStorage.listRevisions(request.rev ?? 0, latest.rev));
456
- for (const actionRev of transforms) {
457
- const transform = await blockStorage.getTransaction(actionRev.actionId);
458
- if (!transform) {
459
- throw new Error(`Missing action ${actionRev.actionId} for block ${blockId}`);
484
+ if (latest && latest.rev >= (request.rev ?? 0)) {
485
+ // Only a real revision race yields a meaningful `staleAt`. When `request.rev` is
486
+ // undefined this same branch fires for an insert collision (the comparison degrades
487
+ // to `latest.rev >= 0`, true for any existing block), and reporting that block's
488
+ // revision would be a number that answers a question nobody asked.
489
+ if (request.rev !== undefined) {
490
+ staleAt = highestStaleAt([staleAt, { blockId, rev: latest.rev }]);
491
+ }
492
+ staleCount++;
493
+ const missedRevisions = await asyncIteratorToArray(blockStorage.listRevisions(request.rev ?? 0, latest.rev));
494
+ for (const actionRev of missedRevisions) {
495
+ const transform = await blockStorage.getTransaction(actionRev.actionId);
496
+ if (!transform) {
497
+ throw new Error(`Missing action ${actionRev.actionId} for block ${blockId}`);
498
+ }
499
+ missing.push({
500
+ actionId: actionRev.actionId,
501
+ rev: actionRev.rev,
502
+ transforms: transformsFromTransform(transform, blockId)
503
+ });
460
504
  }
461
- missing.push({
462
- actionId: actionRev.actionId,
463
- rev: actionRev.rev,
464
- transforms: transformsFromTransform(transform, blockId)
465
- });
466
505
  }
467
506
  }
507
+ // Then handle any pending actions
508
+ const pending = await asyncIteratorToArray(blockStorage.listPendingTransactions());
509
+ pendings.push(...pending.map(actionId => ({ blockId, actionId })));
468
510
  }
469
- // Then handle any pending actions
470
- const pending = await asyncIteratorToArray(blockStorage.listPendingTransactions());
471
- pendings.push(...pending.map(actionId => ({ blockId, actionId })));
472
- }
473
- if (missing.length) {
474
- log('pend:stale actionId=%s missing=%d', request.actionId, missing.length);
475
- return {
476
- success: false,
477
- conflict: true,
478
- missing,
479
- ...(staleAt === undefined ? {} : { staleAt })
480
- };
481
- }
482
- if (pendings.length > 0) {
483
- if (request.policy === 'f') { // Fail on pending actions
484
- return { success: false, conflict: true, pending: pendings };
485
- }
486
- else if (request.policy === 'r') { // Return populated pending actions
511
+ // Every refusal below returns having written ZERO pending records — that is what pass 1
512
+ // finishing before pass 2 begins buys.
513
+ if (staleCount > 0) {
514
+ log('pend:stale actionId=%s stale=%d missing=%d', request.actionId, staleCount, missing.length);
487
515
  return {
488
516
  success: false,
489
517
  conflict: true,
490
- pending: await Promise.all(pendings.map(async (action) => {
491
- const blockStorage = this.createBlockStorage(action.blockId);
492
- return {
493
- blockId: action.blockId,
494
- actionId: action.actionId,
495
- transform: (await blockStorage.getPendingTransaction(action.actionId))
496
- ?? (await blockStorage.getTransaction(action.actionId)) // Possible that since enumeration, the action has been promoted
497
- };
498
- }))
518
+ missing,
519
+ ...(staleAt === undefined ? {} : { staleAt })
499
520
  };
500
521
  }
522
+ if (pendings.length > 0) {
523
+ if (request.policy === 'f') { // Fail on pending actions
524
+ return { success: false, conflict: true, pending: pendings };
525
+ }
526
+ else if (request.policy === 'r') { // Return populated pending actions
527
+ return {
528
+ success: false,
529
+ conflict: true,
530
+ pending: await Promise.all(pendings.map(async (action) => {
531
+ const blockStorage = this.createBlockStorage(action.blockId);
532
+ return {
533
+ blockId: action.blockId,
534
+ actionId: action.actionId,
535
+ // The fallback stays: a rival enumerated on a block we hold cannot be promoted
536
+ // out from under us mid-hold, but a partially-overlapping pend can still have
537
+ // promoted one on a block outside this hold.
538
+ transform: (await blockStorage.getPendingTransaction(action.actionId))
539
+ ?? (await blockStorage.getTransaction(action.actionId))
540
+ };
541
+ }))
542
+ };
543
+ }
544
+ }
545
+ // --- Pass 2: save. Same hold, so nothing advanced a block since pass 1 observed it. ---
546
+ //
547
+ // `satisfied` blocks are skipped: `commit`'s `alreadyDone` arm skips `internalCommit`, the
548
+ // only thing that promotes (and thereby removes) a pending record, so a pending saved here
549
+ // would never clear — a permanent durable reservation that the rival-pending checks (this
550
+ // method's listPendingTransactions scan, and `ClusterMember.validatePendOperations`) refuse
551
+ // every future writer against. They still ride in the returned `blockIds` so `cancel`
552
+ // covers them (deleting an absent pending is a no-op that writes no metadata).
553
+ for (const blockId of blockIds) {
554
+ if (satisfied.has(blockId)) {
555
+ continue;
556
+ }
557
+ const blockStorage = this.createBlockStorage(blockId);
558
+ const blockTransform = transformForBlockId(request.transforms, blockId);
559
+ await blockStorage.savePendingTransaction(request.actionId, blockTransform, request.rev, latches.get(blockId));
560
+ }
561
+ return {
562
+ success: true,
563
+ pending: pendings,
564
+ blockIds
565
+ };
566
+ }
567
+ finally {
568
+ // Releases on every path, including the early returns above and the
569
+ // `Missing action … for block …` throw inside pass 1.
570
+ release();
501
571
  }
502
- // Simultaneously save pending action for each block
503
- // Note: that this is not atomic, after we checked for conflicts and pending actions
504
- // new pending or committed actions may have been added. This is okay, because
505
- // this check during pend is conservative.
506
- //
507
- // Each block's pending write runs under THAT block's write latch, one latch per branch and
508
- // never nested: savePendingTransaction seeds the block's metadata blob when it has none, and
509
- // an unlatched seed racing a concurrent commit/replica on a fresh block erases the `latest`
510
- // the other writer just landed. Never more than one block latch is held by a branch, so this
511
- // cannot deadlock against commit's sorted multi-latch acquisition.
512
- //
513
- // `satisfied` blocks are skipped: `commit`'s `alreadyDone` arm skips `internalCommit`, the
514
- // only thing that promotes (and thereby removes) a pending record, so a pending saved here
515
- // would never clear — a permanent durable reservation that the rival-pending checks (this
516
- // method's listPendingTransactions scan, and `ClusterMember.validatePendOperations`) refuse
517
- // every future writer against, a worse wedge than the one this carve-out fixes. They still
518
- // ride in the returned `blockIds` so `cancel` covers them (deleting an absent pending is a
519
- // no-op that writes no metadata).
520
- await Promise.all(blockIds.filter(blockId => !satisfied.has(blockId)).map(blockId => {
521
- const blockStorage = this.createBlockStorage(blockId);
522
- const blockTransform = transformForBlockId(request.transforms, blockId);
523
- return withBlockWriteLatch(blockId, latch => blockStorage.savePendingTransaction(request.actionId, blockTransform, latch));
524
- }));
525
- return {
526
- success: true,
527
- pending: pendings,
528
- blockIds
529
- };
530
572
  }
531
573
  async cancel(actionRef, _options) {
532
574
  log('cancel actionId=%s blockIds=%d', actionRef.actionId, actionRef.blockIds.length);