@optimystic/db-core 0.20.0 → 0.22.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/src/btree/btree.d.ts +2 -1
- package/dist/src/btree/btree.d.ts.map +1 -1
- package/dist/src/btree/btree.js +1 -1
- package/dist/src/btree/btree.js.map +1 -1
- package/dist/src/chain/chain.d.ts +1 -1
- package/dist/src/chain/chain.d.ts.map +1 -1
- package/dist/src/chain/chain.js +1 -1
- package/dist/src/chain/chain.js.map +1 -1
- package/dist/src/collection/collection.d.ts +73 -9
- package/dist/src/collection/collection.d.ts.map +1 -1
- package/dist/src/collection/collection.js +83 -17
- package/dist/src/collection/collection.js.map +1 -1
- package/dist/src/collections/diary/diary.d.ts.map +1 -1
- package/dist/src/collections/diary/diary.js +2 -1
- package/dist/src/collections/diary/diary.js.map +1 -1
- package/dist/src/collections/diary/struct.js +1 -1
- package/dist/src/collections/diary/struct.js.map +1 -1
- package/dist/src/collections/tree/collection-trunk.js +1 -1
- package/dist/src/collections/tree/collection-trunk.js.map +1 -1
- package/dist/src/collections/tree/struct.d.ts +1 -1
- package/dist/src/collections/tree/struct.d.ts.map +1 -1
- package/dist/src/collections/tree/struct.js +2 -1
- package/dist/src/collections/tree/struct.js.map +1 -1
- package/dist/src/collections/tree/tree.d.ts +20 -8
- package/dist/src/collections/tree/tree.d.ts.map +1 -1
- package/dist/src/collections/tree/tree.js +24 -8
- package/dist/src/collections/tree/tree.js.map +1 -1
- package/dist/src/log/log.d.ts +1 -1
- package/dist/src/log/log.d.ts.map +1 -1
- package/dist/src/log/log.js +2 -2
- package/dist/src/log/log.js.map +1 -1
- package/dist/src/network/struct.d.ts +13 -0
- package/dist/src/network/struct.d.ts.map +1 -1
- package/dist/src/network/struct.js.map +1 -1
- package/dist/src/testing/test-transactor.d.ts +1 -1
- package/dist/src/testing/test-transactor.d.ts.map +1 -1
- package/dist/src/testing/test-transactor.js +37 -8
- package/dist/src/testing/test-transactor.js.map +1 -1
- package/dist/src/transaction/coordinator.d.ts.map +1 -1
- package/dist/src/transaction/coordinator.js +2 -1
- package/dist/src/transaction/coordinator.js.map +1 -1
- package/dist/src/transactor/network-transactor.d.ts.map +1 -1
- package/dist/src/transactor/network-transactor.js +16 -5
- package/dist/src/transactor/network-transactor.js.map +1 -1
- package/dist/src/transactor/transactor-source.d.ts +5 -0
- package/dist/src/transactor/transactor-source.d.ts.map +1 -1
- package/dist/src/transactor/transactor-source.js +15 -2
- package/dist/src/transactor/transactor-source.js.map +1 -1
- package/dist/src/transform/cache-source.d.ts +13 -1
- package/dist/src/transform/cache-source.d.ts.map +1 -1
- package/dist/src/transform/cache-source.js +26 -2
- package/dist/src/transform/cache-source.js.map +1 -1
- package/dist/src/transform/helpers.d.ts +6 -1
- package/dist/src/transform/helpers.d.ts.map +1 -1
- package/dist/src/transform/helpers.js +7 -6
- package/dist/src/transform/helpers.js.map +1 -1
- package/dist/src/transform/tracker.d.ts.map +1 -1
- package/dist/src/transform/tracker.js +2 -1
- package/dist/src/transform/tracker.js.map +1 -1
- package/package.json +1 -1
- package/src/btree/btree.ts +2 -1
- package/src/chain/chain.ts +2 -1
- package/src/collection/collection.ts +114 -18
- package/src/collections/diary/diary.ts +2 -1
- package/src/collections/diary/struct.ts +1 -1
- package/src/collections/tree/collection-trunk.ts +1 -1
- package/src/collections/tree/readme.md +32 -0
- package/src/collections/tree/struct.ts +3 -1
- package/src/collections/tree/tree.ts +312 -293
- package/src/log/log.ts +2 -2
- package/src/network/struct.ts +13 -0
- package/src/testing/test-transactor.ts +38 -8
- package/src/transaction/coordinator.ts +2 -1
- package/src/transactor/network-transactor.ts +16 -5
- package/src/transactor/transactor-source.ts +16 -2
- package/src/transform/cache-source.ts +26 -1
- package/src/transform/helpers.ts +7 -6
- package/src/transform/tracker.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-source.js","sourceRoot":"","sources":["../../../src/transform/cache-source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cache-source.js","sourceRoot":"","sources":["../../../src/transform/cache-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,11 @@ export declare function transformsFromTransform(transform: Transform, blockId: B
|
|
|
48
48
|
export declare function applyTransformToStore<T extends IBlock>(transform: Transforms, store: BlockStore<T>): void;
|
|
49
49
|
/** Applies a transform to the given block */
|
|
50
50
|
export declare function applyTransform(block: IBlock | undefined, transform: Transform): IBlock | undefined;
|
|
51
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Concatenates a single block's transform onto the given transforms.
|
|
53
|
+
*
|
|
54
|
+
* Delegates to `mergeTransforms` so the two helpers cannot drift: updates for a shared
|
|
55
|
+
* block id concatenate (order-preserving), deletes dedupe, inserts stay last-wins.
|
|
56
|
+
*/
|
|
52
57
|
export declare function concatTransform(transforms: Transforms, blockId: BlockId, transform: Transform): Transforms;
|
|
53
58
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/transform/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,cAAc,QAMnG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,QAIzE;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,cAAc;;EAOlG;AAED,8DAA8D;AAC9D,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,YAMvE;AAED,iCAAiC;AACjC,wBAAgB,eAAe,IAAI,UAAU,CAE5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,CAQhE;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAYxE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAIhE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,UAAU,EAAE,UAAU,EAAE,GAAG,UAAU,CAExE;AAGD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,CAOtF;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAM1F;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,QAYlG;AAED,6CAA6C;AAC7C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAWlG;AAED
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/transform/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,cAAc,QAMnG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,QAIzE;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,cAAc;;EAOlG;AAED,8DAA8D;AAC9D,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,YAMvE;AAED,iCAAiC;AACjC,wBAAgB,eAAe,IAAI,UAAU,CAE5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,CAQhE;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAYxE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAIhE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,UAAU,EAAE,UAAU,EAAE,GAAG,UAAU,CAExE;AAGD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,CAOtF;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAM1F;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,QAYlG;AAED,6CAA6C;AAC7C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAWlG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,CAE1G"}
|
|
@@ -135,12 +135,13 @@ export function applyTransform(block, transform) {
|
|
|
135
135
|
}
|
|
136
136
|
return block;
|
|
137
137
|
}
|
|
138
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* Concatenates a single block's transform onto the given transforms.
|
|
140
|
+
*
|
|
141
|
+
* Delegates to `mergeTransforms` so the two helpers cannot drift: updates for a shared
|
|
142
|
+
* block id concatenate (order-preserving), deletes dedupe, inserts stay last-wins.
|
|
143
|
+
*/
|
|
139
144
|
export function concatTransform(transforms, blockId, transform) {
|
|
140
|
-
return
|
|
141
|
-
inserts: { ...transforms.inserts, ...(transform.insert ? { [blockId]: transform.insert } : {}) },
|
|
142
|
-
updates: { ...transforms.updates, ...(transform.updates ? { [blockId]: transform.updates } : {}) },
|
|
143
|
-
deletes: [...(transforms.deletes ?? []), ...(transform.delete ? [blockId] : [])]
|
|
144
|
-
};
|
|
145
|
+
return mergeTransforms(transforms, transformsFromTransform(transform, blockId));
|
|
145
146
|
}
|
|
146
147
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/transform/helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/transform/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/transform/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,IAAI,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/transform/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,IAAI,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAIhK;;GAEG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAW9D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,6EAA6E;IACtE,UAAU;IAZlB;;;;;;yDAMqD;IACrD,OAAO,CAAC,YAAY,CAAiD;gBAGnD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACxC,6EAA6E;IACtE,UAAU,mCAAoB;IAGtC,yFAAyF;IACzF,OAAO,CAAC,gBAAgB;IAKlB,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,GAAE,WAAqB,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAsCjF;;;+FAG2F;IAC3F,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAIhC,UAAU,IAAI,OAAO;IAIrB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW;IAIhE,MAAM,CAAC,KAAK,EAAE,CAAC;IAYf,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc;IAkB3C,MAAM,CAAC,OAAO,EAAE,OAAO;IAQvB,KAAK,CAAC,YAAY,mCAAoB;IAOtC,mBAAmB,IAAI,OAAO,EAAE;IAIhC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;CAGhC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { applyOperation, applyOperations, emptyTransforms, blockIdsForTransforms
|
|
1
|
+
import { applyOperation, applyOperations, emptyTransforms, blockIdsForTransforms } from "./helpers.js";
|
|
2
|
+
import { ensured } from "../utility/ensured.js";
|
|
2
3
|
/** A block store that collects transformations, without applying them to the underlying source.
|
|
3
4
|
* Transformations are also applied to the retrieved blocks, making it seem like the source has been modified.
|
|
4
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/transform/tracker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/transform/tracker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/btree/btree.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Path, PathBranch
|
|
1
|
+
import { Path, PathBranch } from "./path.js";
|
|
2
|
+
import type { ITreeTrunk, KeyRange, getTrunkFunc } from "./index.js";
|
|
2
3
|
import type { BlockId, BlockStore } from "../blocks/index.js";
|
|
3
4
|
import { apply, get } from "../blocks/index.js";
|
|
4
5
|
import { TreeLeafBlockType, TreeBranchBlockType, entries$, nodes$, partitions$ } from "./nodes.js";
|
package/src/chain/chain.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Atomic
|
|
1
|
+
import { Atomic } from "../transform/atomic.js";
|
|
2
|
+
import type { BlockStore, BlockId, IBlock } from "../index.js";
|
|
2
3
|
import { ChainDataBlockType, ChainHeaderBlockType, entries$, headId$, nextId$, priorId$, tailId$ } from "./chain-nodes.js";
|
|
3
4
|
import type { ChainDataNode, ChainHeaderNode } from "./chain-nodes.js";
|
|
4
5
|
import { apply } from "../blocks/index.js";
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import type { IBlock, Action, ActionType, ActionHandler, BlockId, ITransactor, BlockStore, Transforms, ActionId } from "../index.js";
|
|
2
|
-
import { Log
|
|
2
|
+
import { Log } from "../log/log.js";
|
|
3
|
+
import { Atomic } from "../transform/atomic.js";
|
|
4
|
+
import { Tracker } from "../transform/tracker.js";
|
|
5
|
+
import { CacheSource } from "../transform/cache-source.js";
|
|
6
|
+
import { copyTransforms, isTransformsEmpty } from "../transform/helpers.js";
|
|
7
|
+
import { TransactorSource } from "../transactor/transactor-source.js";
|
|
3
8
|
import { BlockUnavailableError } from "../network/struct.js";
|
|
4
9
|
import type { CollectionHeaderBlock, CollectionId, ICollection, SyncOptions } from "./index.js";
|
|
5
|
-
import { CollectionHeaderVanishedError, SyncRetryExhaustedError } from "./
|
|
10
|
+
import { CollectionHeaderVanishedError, SyncRetryExhaustedError } from "./struct.js";
|
|
6
11
|
import type { ActionContext } from "./action.js";
|
|
7
12
|
import type { ReadDependency } from "../transaction/transaction.js";
|
|
8
13
|
import { clampPriority } from "../transaction/transaction.js";
|
|
@@ -35,6 +40,27 @@ export type CollectionInitOptions<TAction> = {
|
|
|
35
40
|
filterConflict?: (action: Action<TAction>, potential: Action<TAction>[]) => Action<TAction> | undefined
|
|
36
41
|
}
|
|
37
42
|
|
|
43
|
+
/** Options for building a committed read view (see {@link Collection.createReadTracker}
|
|
44
|
+
* and `Tree.readView`). */
|
|
45
|
+
export interface ReadViewOptions {
|
|
46
|
+
/** Record read dependencies into the collection's shared collector.
|
|
47
|
+
* Default false — a pinned committed view is not part of any transaction's
|
|
48
|
+
* conflict set, so its reads must not be able to fail the writer's commit
|
|
49
|
+
* validation. Deferred-constraint safety does not depend on these reads:
|
|
50
|
+
* validator peers re-execute the transaction's recorded statements against
|
|
51
|
+
* their own committed state, so a constraint that no longer holds is caught
|
|
52
|
+
* at validation regardless. */
|
|
53
|
+
recordReads?: boolean;
|
|
54
|
+
/** Pin the view to this committed boundary instead of the collection's CURRENT
|
|
55
|
+
* action context. Pass a {@link CollectionSnapshot.context} so the view describes
|
|
56
|
+
* the same committed moment the snapshot's transforms sat on — even when the
|
|
57
|
+
* collection has committed further since (e.g. a multi-tree commit sweep that has
|
|
58
|
+
* already flushed THIS tree but not its siblings). Blocks cached at revisions
|
|
59
|
+
* newer than the pin are excluded from the view's warm seed and refetched from
|
|
60
|
+
* the transactor at the pinned revision. Default: the current context. */
|
|
61
|
+
pinContext?: ActionContext;
|
|
62
|
+
}
|
|
63
|
+
|
|
38
64
|
/** A point-in-time copy of a collection's staged (un-synced) state, produced by
|
|
39
65
|
* {@link Collection.snapshotPending} and consumed by {@link Collection.restorePending}. */
|
|
40
66
|
export interface CollectionSnapshot<TAction> {
|
|
@@ -42,6 +68,13 @@ export interface CollectionSnapshot<TAction> {
|
|
|
42
68
|
transforms: Transforms;
|
|
43
69
|
/** Pending actions queued at snapshot time. */
|
|
44
70
|
pending: Action<TAction>[];
|
|
71
|
+
/** The committed boundary (action context) the staged state sat on when captured.
|
|
72
|
+
* `undefined` for a collection with no committed revision yet (an invented
|
|
73
|
+
* collection whose header/root still live in the tracker). A read view built
|
|
74
|
+
* from this snapshot pins to this boundary (see {@link ReadViewOptions.pinContext}),
|
|
75
|
+
* so the view stays coherent with the snapshot's transforms even if the
|
|
76
|
+
* collection commits further before the view is built. */
|
|
77
|
+
context?: ActionContext;
|
|
45
78
|
}
|
|
46
79
|
|
|
47
80
|
export class Collection<TAction> implements ICollection<TAction> {
|
|
@@ -280,15 +313,25 @@ export class Collection<TAction> implements ICollection<TAction> {
|
|
|
280
313
|
}
|
|
281
314
|
}
|
|
282
315
|
|
|
283
|
-
// On conflicts, clear related caching and block-tracking and replay logical operations
|
|
284
|
-
if (anyConflicts) {
|
|
285
|
-
await this.replayActions();
|
|
286
|
-
}
|
|
287
|
-
|
|
288
316
|
// Update our context to the latest — monotonically. An empty/unopenable log yields no
|
|
289
317
|
// context at all, and a log read that lags what we already committed yields an older one;
|
|
290
|
-
// neither is grounds for forgetting the revision we hold.
|
|
318
|
+
// neither is grounds for forgetting the revision we hold. This must happen BEFORE
|
|
319
|
+
// replayActions below: replay re-reads blocks through this.source, which materializes
|
|
320
|
+
// content at this.actionContext.rev — if the cursor hasn't advanced yet, replay re-reads
|
|
321
|
+
// at the revision we're leaving and refills the cache with stale content that nothing
|
|
322
|
+
// will invalidate again (the log entry that would have cleared it was already consumed).
|
|
291
323
|
Collection.advanceContext(this.source, this.id, latest?.context);
|
|
324
|
+
|
|
325
|
+
// On conflicts, re-stage the pending actions against the adopted revision. The affected
|
|
326
|
+
// blocks were already dropped from sourceCache above (per log entry / per invalidation),
|
|
327
|
+
// so the replay's reads re-materialize from the transactor.
|
|
328
|
+
// NOTE: a throw out of replayActions leaves the tracker holding only the transforms
|
|
329
|
+
// replayed so far while `pending` still lists them all; the caller's error handling is
|
|
330
|
+
// expected to abort/reset the collection rather than keep staging. If replay ever gains a
|
|
331
|
+
// routinely-throwing read path, rebuild into a scratch tracker and swap on success.
|
|
332
|
+
if (anyConflicts) {
|
|
333
|
+
await this.replayActions();
|
|
334
|
+
}
|
|
292
335
|
}
|
|
293
336
|
|
|
294
337
|
/** Capture the current staged state — tracker transforms plus the pending
|
|
@@ -305,7 +348,11 @@ export class Collection<TAction> implements ICollection<TAction> {
|
|
|
305
348
|
* Synchronous and latch-free: intended to bracket transaction-scoped staging,
|
|
306
349
|
* when no concurrent act/sync is in flight. */
|
|
307
350
|
snapshotPending(): CollectionSnapshot<TAction> {
|
|
308
|
-
return {
|
|
351
|
+
return {
|
|
352
|
+
transforms: copyTransforms(this.tracker.transforms),
|
|
353
|
+
pending: [...this.pending],
|
|
354
|
+
context: structuredClone(this.source.actionContext),
|
|
355
|
+
};
|
|
309
356
|
}
|
|
310
357
|
|
|
311
358
|
/** Restore the staged state captured by {@link snapshotPending}, discarding any
|
|
@@ -316,15 +363,64 @@ export class Collection<TAction> implements ICollection<TAction> {
|
|
|
316
363
|
this.pending = [...snapshot.pending];
|
|
317
364
|
}
|
|
318
365
|
|
|
319
|
-
/** A read-only {@link Tracker}
|
|
320
|
-
* seeded with a (deep-copied) set of pre-transaction transforms.
|
|
321
|
-
* observe
|
|
322
|
-
* mutations staged into this collection's live tracker afterward
|
|
323
|
-
*
|
|
324
|
-
*
|
|
325
|
-
*
|
|
326
|
-
|
|
327
|
-
|
|
366
|
+
/** A read-only {@link Tracker} pinned to this collection's committed state AS OF the
|
|
367
|
+
* moment of this call, seeded with a (deep-copied) set of pre-transaction transforms.
|
|
368
|
+
* Reads through it observe exactly that revision plus exactly those transforms — NOT
|
|
369
|
+
* the mutations staged into this collection's live tracker afterward, and NOT commits
|
|
370
|
+
* that fold into (or clear) the live read cache while the view is being walked. Used
|
|
371
|
+
* to build a committed read view (see {@link Tree.readView}) that a scan can trust
|
|
372
|
+
* from first row to last.
|
|
373
|
+
*
|
|
374
|
+
* The pinning has three legs, built in ONE synchronous block so they all describe the
|
|
375
|
+
* same instant (do not introduce an await between them):
|
|
376
|
+
* - a private {@link TransactorSource} whose action context is a deep copy FROZEN at
|
|
377
|
+
* view-creation time, so a block first read after a later commit still materializes
|
|
378
|
+
* at the pinned revision (the transactor honours `context.rev` on get);
|
|
379
|
+
* - a private {@link CacheSource} nothing else references, so the live collection's
|
|
380
|
+
* `transformCache`/`clear` cannot reach it;
|
|
381
|
+
* - that private cache is seeded from the shared cache's current entries, so the
|
|
382
|
+
* common committed read (deferred CHECK over a warm cache) stays warm instead of
|
|
383
|
+
* refetching every block over the network.
|
|
384
|
+
*
|
|
385
|
+
* By default the view records NO read dependencies — it is not part of any
|
|
386
|
+
* transaction's conflict set (see {@link ReadViewOptions.recordReads}).
|
|
387
|
+
*
|
|
388
|
+
* NOTE: each view holds up to the cache LRU budget (128) of cloned blocks plus
|
|
389
|
+
* whatever it faults in. Views are per-scan and dropped when the scan ends; a very
|
|
390
|
+
* long-lived committed scan pins that much memory.
|
|
391
|
+
*
|
|
392
|
+
* NOTE: an INVENTED collection (createOrOpen found no header, so `actionContext` is
|
|
393
|
+
* undefined) pins to no revision — its private source asks the transactor for the
|
|
394
|
+
* latest. Harmless today because such a collection's blocks all live in the tracker
|
|
395
|
+
* transforms, so a view never reaches storage; if invented collections ever gain
|
|
396
|
+
* committed blocks not covered by their transforms, this view would follow storage
|
|
397
|
+
* forward instead of staying pinned.
|
|
398
|
+
*
|
|
399
|
+
* When {@link ReadViewOptions.pinContext} is supplied, the view pins to THAT
|
|
400
|
+
* boundary instead of the current context, and cache entries committed at a newer
|
|
401
|
+
* revision are dropped from the seed (they would otherwise be served blindly — the
|
|
402
|
+
* cache never checks a hit against the requested context). Dropped entries are
|
|
403
|
+
* refetched from the transactor, which resolves the highest committed revision at
|
|
404
|
+
* or below the pin. This is what lets a snapshot captured BEFORE a commit still
|
|
405
|
+
* yield a coherent pre-commit view AFTER that commit folded into the shared cache
|
|
406
|
+
* (a mid-sweep multi-tree commit being the motivating case). */
|
|
407
|
+
createReadTracker(transforms: Transforms, options?: ReadViewOptions): Tracker<IBlock> {
|
|
408
|
+
const collector = options?.recordReads ? this.source.getCollector() : undefined;
|
|
409
|
+
const pinContext = options?.pinContext ?? this.source.actionContext;
|
|
410
|
+
const pinRev = options?.pinContext?.rev;
|
|
411
|
+
let seed = this.sourceCache.snapshotEntries();
|
|
412
|
+
if (pinRev !== undefined) {
|
|
413
|
+
// NOTE: entries whose revision the cache never learned read as 0 and pass this
|
|
414
|
+
// filter. Committed blocks always carry a real revision (the transactor reports
|
|
415
|
+
// it on load; transformCache stamps it on fold), so a rev-0 entry newer than the
|
|
416
|
+
// pin does not occur on the paths that reach here.
|
|
417
|
+
seed = seed.filter(([, , revision]) => revision <= pinRev);
|
|
418
|
+
}
|
|
419
|
+
const pinnedSource = new TransactorSource<IBlock>(
|
|
420
|
+
this.id, this.transactor, structuredClone(pinContext), collector);
|
|
421
|
+
const pinnedCache = new CacheSource<IBlock>(
|
|
422
|
+
pinnedSource, undefined, collector, seed);
|
|
423
|
+
return new Tracker(pinnedCache, copyTransforms(transforms));
|
|
328
424
|
}
|
|
329
425
|
|
|
330
426
|
/** The staged (not-yet-synced) actions queued by {@link act}.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Collection
|
|
1
|
+
import { Collection } from "../../collection/collection.js";
|
|
2
2
|
import type { ITransactor, Action, BlockId, BlockStore, IBlock, CollectionInitOptions, CollectionId } from "../../index.js";
|
|
3
|
+
import { registerCollectionType } from "../../collection/collection-type-registry.js";
|
|
3
4
|
import { DiaryHeaderBlockType } from "./struct.js";
|
|
4
5
|
|
|
5
6
|
/** A diary keeps every entry in the log itself, so the header block is the whole structure
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { apply, get } from "../../
|
|
1
|
+
import { apply, get } from "../../blocks/helpers.js";
|
|
2
2
|
import type { BlockId, BlockStore, IBlock, ITreeTrunk } from "../../index.js";
|
|
3
3
|
import type { ITreeNode } from "../../btree/nodes.js";
|
|
4
4
|
import { rootId$, type TreeCollectionHeaderBlock } from "./struct.js";
|
|
@@ -17,3 +17,35 @@ tree.replace([
|
|
|
17
17
|
]);
|
|
18
18
|
```
|
|
19
19
|
Replaces the value at key 5 with { a: 1, b: 'Value' }, and deletes the value at key 10.
|
|
20
|
+
|
|
21
|
+
## Committed read views (`readView`)
|
|
22
|
+
|
|
23
|
+
`tree.readView(snapshot)` builds a read-only view of the tree as captured by an earlier
|
|
24
|
+
`tree.snapshot()` — typically the pre-transaction state recorded before any DML was staged.
|
|
25
|
+
It is how a `committed.<Table>` reference (e.g. inside a deferred CHECK) reads committed
|
|
26
|
+
rows while the live tree still holds the transaction's in-flight changes.
|
|
27
|
+
|
|
28
|
+
The view guarantees **one consistent answer from first read to last**:
|
|
29
|
+
|
|
30
|
+
- It never sees mutations staged into the live tree after the snapshot was taken.
|
|
31
|
+
- It is pinned to the **snapshot's** committed boundary — the revision the collection held
|
|
32
|
+
when `snapshot()` was called (`CollectionSnapshot.context`), not the revision at
|
|
33
|
+
view-creation time. So a view built AFTER the same tree flushed a further commit still
|
|
34
|
+
describes the snapshot's boundary (the multi-tree commit-sweep case: tree N already
|
|
35
|
+
flushed, tree N+1 not — views of both describe the one pre-sweep boundary). Commits
|
|
36
|
+
that fold into the live tree's cache — or clear it (a live read's `update()` after
|
|
37
|
+
another writer commits) — while the view is being walked do not change what the view
|
|
38
|
+
returns. This holds even for blocks the view has to fetch from storage mid-scan (the
|
|
39
|
+
view carries its own frozen action context, which the transactor honours on `get`, and
|
|
40
|
+
cache entries newer than the pin are excluded from the view's warm seed). A hand-built
|
|
41
|
+
snapshot with no recorded boundary falls back to the collection's context at
|
|
42
|
+
view-creation time.
|
|
43
|
+
- A block the storage layer cannot reconstruct at the pinned revision surfaces as
|
|
44
|
+
`BlockUnavailableError`, never as a silently absent block.
|
|
45
|
+
|
|
46
|
+
By default a view records **no read dependencies** — it is not part of any transaction's
|
|
47
|
+
conflict set, so an unrelated committed read can never fail a writer's commit validation.
|
|
48
|
+
Pass `{ recordReads: true }` to opt back in.
|
|
49
|
+
|
|
50
|
+
Each view privately holds up to the block-cache LRU budget (128 blocks, cloned at creation)
|
|
51
|
+
plus whatever it faults in; views are intended to be per-scan and dropped when the scan ends.
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { BlockId, CollectionHeaderBlock } from "../../index.js";
|
|
2
|
+
import { registerBlockType } from "../../blocks/block-types.js";
|
|
3
|
+
import { registerCollectionType } from "../../collection/collection-type-registry.js";
|
|
2
4
|
import { nameof } from "../../utility/nameof.js";
|
|
3
5
|
|
|
4
6
|
export const TreeHeaderBlockType = registerBlockType("TRE", "TreeHeaderBlock");
|