@optimystic/db-core 0.14.0 → 0.16.2
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/blocks/block-store.d.ts +18 -1
- package/dist/src/blocks/block-store.d.ts.map +1 -1
- package/dist/src/blocks/helpers.d.ts +2 -2
- package/dist/src/blocks/helpers.d.ts.map +1 -1
- package/dist/src/blocks/helpers.js +2 -2
- package/dist/src/blocks/helpers.js.map +1 -1
- package/dist/src/btree/btree.d.ts +27 -6
- package/dist/src/btree/btree.d.ts.map +1 -1
- package/dist/src/btree/btree.js +104 -61
- package/dist/src/btree/btree.js.map +1 -1
- package/dist/src/chain/chain.d.ts.map +1 -1
- package/dist/src/chain/chain.js +11 -1
- package/dist/src/chain/chain.js.map +1 -1
- package/dist/src/cluster/index.d.ts +1 -0
- package/dist/src/cluster/index.d.ts.map +1 -1
- package/dist/src/cluster/index.js +1 -0
- package/dist/src/cluster/index.js.map +1 -1
- package/dist/src/cluster/membership.d.ts +49 -0
- package/dist/src/cluster/membership.d.ts.map +1 -0
- package/dist/src/cluster/membership.js +75 -0
- package/dist/src/cluster/membership.js.map +1 -0
- package/dist/src/cluster/structs.d.ts +50 -1
- package/dist/src/cluster/structs.d.ts.map +1 -1
- package/dist/src/cluster/structs.js +9 -1
- package/dist/src/cluster/structs.js.map +1 -1
- package/dist/src/cohort-topic/addressing.d.ts +8 -2
- package/dist/src/cohort-topic/addressing.d.ts.map +1 -1
- package/dist/src/cohort-topic/addressing.js +11 -3
- package/dist/src/cohort-topic/addressing.js.map +1 -1
- package/dist/src/cohort-topic/antidos/bootstrap-evidence.d.ts +13 -7
- package/dist/src/cohort-topic/antidos/bootstrap-evidence.d.ts.map +1 -1
- package/dist/src/cohort-topic/antidos/bootstrap-evidence.js +17 -6
- package/dist/src/cohort-topic/antidos/bootstrap-evidence.js.map +1 -1
- package/dist/src/cohort-topic/antidos/replay-guard.d.ts +17 -0
- package/dist/src/cohort-topic/antidos/replay-guard.d.ts.map +1 -1
- package/dist/src/cohort-topic/antidos/replay-guard.js +33 -0
- package/dist/src/cohort-topic/antidos/replay-guard.js.map +1 -1
- package/dist/src/cohort-topic/antidos/topic-budget.d.ts +7 -0
- package/dist/src/cohort-topic/antidos/topic-budget.d.ts.map +1 -1
- package/dist/src/cohort-topic/antidos/topic-budget.js +8 -2
- package/dist/src/cohort-topic/antidos/topic-budget.js.map +1 -1
- package/dist/src/cohort-topic/coldstart.d.ts +34 -14
- package/dist/src/cohort-topic/coldstart.d.ts.map +1 -1
- package/dist/src/cohort-topic/coldstart.js +25 -11
- package/dist/src/cohort-topic/coldstart.js.map +1 -1
- package/dist/src/cohort-topic/gossip/bus.d.ts +12 -1
- package/dist/src/cohort-topic/gossip/bus.d.ts.map +1 -1
- package/dist/src/cohort-topic/gossip/bus.js +27 -1
- package/dist/src/cohort-topic/gossip/bus.js.map +1 -1
- package/dist/src/cohort-topic/gossip/view.d.ts +8 -0
- package/dist/src/cohort-topic/gossip/view.d.ts.map +1 -1
- package/dist/src/cohort-topic/gossip/view.js +17 -1
- package/dist/src/cohort-topic/gossip/view.js.map +1 -1
- package/dist/src/cohort-topic/member-engine.d.ts +10 -3
- package/dist/src/cohort-topic/member-engine.d.ts.map +1 -1
- package/dist/src/cohort-topic/member-engine.js +29 -14
- package/dist/src/cohort-topic/member-engine.js.map +1 -1
- package/dist/src/cohort-topic/membership/publisher.d.ts +14 -7
- package/dist/src/cohort-topic/membership/publisher.d.ts.map +1 -1
- package/dist/src/cohort-topic/membership/publisher.js +15 -27
- package/dist/src/cohort-topic/membership/publisher.js.map +1 -1
- package/dist/src/cohort-topic/membership/verifier.d.ts +35 -0
- package/dist/src/cohort-topic/membership/verifier.d.ts.map +1 -1
- package/dist/src/cohort-topic/membership/verifier.js +88 -3
- package/dist/src/cohort-topic/membership/verifier.js.map +1 -1
- package/dist/src/cohort-topic/promotion.d.ts +7 -0
- package/dist/src/cohort-topic/promotion.d.ts.map +1 -1
- package/dist/src/cohort-topic/promotion.js +16 -2
- package/dist/src/cohort-topic/promotion.js.map +1 -1
- package/dist/src/cohort-topic/registration/renewal.d.ts +18 -0
- package/dist/src/cohort-topic/registration/renewal.d.ts.map +1 -1
- package/dist/src/cohort-topic/registration/renewal.js +54 -0
- package/dist/src/cohort-topic/registration/renewal.js.map +1 -1
- package/dist/src/cohort-topic/registration/types.d.ts +12 -0
- package/dist/src/cohort-topic/registration/types.d.ts.map +1 -1
- package/dist/src/cohort-topic/registration/types.js +14 -0
- package/dist/src/cohort-topic/registration/types.js.map +1 -1
- package/dist/src/cohort-topic/service.d.ts +4 -3
- package/dist/src/cohort-topic/service.d.ts.map +1 -1
- package/dist/src/cohort-topic/service.js +38 -12
- package/dist/src/cohort-topic/service.js.map +1 -1
- package/dist/src/cohort-topic/sig/payloads.d.ts +23 -7
- package/dist/src/cohort-topic/sig/payloads.d.ts.map +1 -1
- package/dist/src/cohort-topic/sig/payloads.js +22 -6
- package/dist/src/cohort-topic/sig/payloads.js.map +1 -1
- package/dist/src/cohort-topic/traffic.d.ts +6 -0
- package/dist/src/cohort-topic/traffic.d.ts.map +1 -1
- package/dist/src/cohort-topic/traffic.js +16 -1
- package/dist/src/cohort-topic/traffic.js.map +1 -1
- package/dist/src/cohort-topic/walk.d.ts +22 -7
- package/dist/src/cohort-topic/walk.d.ts.map +1 -1
- package/dist/src/cohort-topic/walk.js +78 -18
- package/dist/src/cohort-topic/walk.js.map +1 -1
- package/dist/src/cohort-topic/wire/codec.d.ts +3 -1
- package/dist/src/cohort-topic/wire/codec.d.ts.map +1 -1
- package/dist/src/cohort-topic/wire/codec.js +7 -1
- package/dist/src/cohort-topic/wire/codec.js.map +1 -1
- package/dist/src/cohort-topic/wire/index.d.ts +1 -1
- package/dist/src/cohort-topic/wire/index.d.ts.map +1 -1
- package/dist/src/cohort-topic/wire/index.js +1 -1
- package/dist/src/cohort-topic/wire/index.js.map +1 -1
- package/dist/src/cohort-topic/wire/payloads.d.ts +5 -4
- package/dist/src/cohort-topic/wire/payloads.d.ts.map +1 -1
- package/dist/src/cohort-topic/wire/payloads.js +14 -5
- package/dist/src/cohort-topic/wire/payloads.js.map +1 -1
- package/dist/src/cohort-topic/wire/primitives.d.ts +65 -0
- package/dist/src/cohort-topic/wire/primitives.d.ts.map +1 -0
- package/dist/src/cohort-topic/wire/primitives.js +173 -0
- package/dist/src/cohort-topic/wire/primitives.js.map +1 -0
- package/dist/src/cohort-topic/wire/types.d.ts +132 -5
- package/dist/src/cohort-topic/wire/types.d.ts.map +1 -1
- package/dist/src/cohort-topic/wire/validate.d.ts +15 -5
- package/dist/src/cohort-topic/wire/validate.d.ts.map +1 -1
- package/dist/src/cohort-topic/wire/validate.js +146 -123
- package/dist/src/cohort-topic/wire/validate.js.map +1 -1
- package/dist/src/collection/collection.d.ts +23 -12
- package/dist/src/collection/collection.d.ts.map +1 -1
- package/dist/src/collection/collection.js +111 -35
- package/dist/src/collection/collection.js.map +1 -1
- package/dist/src/collection/struct.d.ts +37 -2
- package/dist/src/collection/struct.d.ts.map +1 -1
- package/dist/src/collection/struct.js +16 -1
- package/dist/src/collection/struct.js.map +1 -1
- package/dist/src/collections/tree/tree.d.ts +18 -1
- package/dist/src/collections/tree/tree.d.ts.map +1 -1
- package/dist/src/collections/tree/tree.js +36 -6
- package/dist/src/collections/tree/tree.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/log/log.d.ts +26 -3
- package/dist/src/log/log.d.ts.map +1 -1
- package/dist/src/log/log.js +34 -7
- package/dist/src/log/log.js.map +1 -1
- package/dist/src/log/struct.d.ts +5 -4
- package/dist/src/log/struct.d.ts.map +1 -1
- package/dist/src/log/struct.js.map +1 -1
- package/dist/src/matchmaking/wire.d.ts +2 -1
- package/dist/src/matchmaking/wire.d.ts.map +1 -1
- package/dist/src/matchmaking/wire.js +13 -92
- package/dist/src/matchmaking/wire.js.map +1 -1
- package/dist/src/network/i-key-network.d.ts +9 -0
- package/dist/src/network/i-key-network.d.ts.map +1 -1
- package/dist/src/network/i-repo.d.ts +8 -0
- package/dist/src/network/i-repo.d.ts.map +1 -1
- package/dist/src/network/struct.d.ts +10 -0
- package/dist/src/network/struct.d.ts.map +1 -1
- package/dist/src/reactivity/push-state.d.ts.map +1 -1
- package/dist/src/reactivity/push-state.js +4 -33
- package/dist/src/reactivity/push-state.js.map +1 -1
- package/dist/src/reactivity/wire-validate.d.ts +7 -22
- package/dist/src/reactivity/wire-validate.d.ts.map +1 -1
- package/dist/src/reactivity/wire-validate.js +7 -73
- package/dist/src/reactivity/wire-validate.js.map +1 -1
- package/dist/src/reactivity/wire.js +3 -3
- package/dist/src/reactivity/wire.js.map +1 -1
- package/dist/src/testing/async-wait.d.ts +23 -0
- package/dist/src/testing/async-wait.d.ts.map +1 -0
- package/dist/src/testing/async-wait.js +42 -0
- package/dist/src/testing/async-wait.js.map +1 -0
- package/dist/src/testing/index.d.ts +3 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +3 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/testing/test-transactor.d.ts +44 -0
- package/dist/src/testing/test-transactor.d.ts.map +1 -0
- package/dist/src/testing/test-transactor.js +423 -0
- package/dist/src/testing/test-transactor.js.map +1 -0
- package/dist/src/transaction/actions-engine.d.ts +6 -3
- package/dist/src/transaction/actions-engine.d.ts.map +1 -1
- package/dist/src/transaction/actions-engine.js +8 -7
- package/dist/src/transaction/actions-engine.js.map +1 -1
- package/dist/src/transaction/coordinator.d.ts +43 -22
- package/dist/src/transaction/coordinator.d.ts.map +1 -1
- package/dist/src/transaction/coordinator.js +443 -178
- package/dist/src/transaction/coordinator.js.map +1 -1
- package/dist/src/transaction/errors.d.ts +82 -0
- package/dist/src/transaction/errors.d.ts.map +1 -0
- package/dist/src/transaction/errors.js +93 -0
- package/dist/src/transaction/errors.js.map +1 -0
- package/dist/src/transaction/index.d.ts +6 -3
- package/dist/src/transaction/index.d.ts.map +1 -1
- package/dist/src/transaction/index.js +4 -2
- package/dist/src/transaction/index.js.map +1 -1
- package/dist/src/transaction/operations-hash.d.ts +119 -0
- package/dist/src/transaction/operations-hash.d.ts.map +1 -0
- package/dist/src/transaction/operations-hash.js +180 -0
- package/dist/src/transaction/operations-hash.js.map +1 -0
- package/dist/src/transaction/read-dependency-collector.d.ts +43 -0
- package/dist/src/transaction/read-dependency-collector.d.ts.map +1 -0
- package/dist/src/transaction/read-dependency-collector.js +69 -0
- package/dist/src/transaction/read-dependency-collector.js.map +1 -0
- package/dist/src/transaction/session.d.ts +12 -3
- package/dist/src/transaction/session.d.ts.map +1 -1
- package/dist/src/transaction/session.js +35 -9
- package/dist/src/transaction/session.js.map +1 -1
- package/dist/src/transaction/transaction.d.ts +162 -1
- package/dist/src/transaction/transaction.d.ts.map +1 -1
- package/dist/src/transaction/transaction.js +85 -3
- package/dist/src/transaction/transaction.js.map +1 -1
- package/dist/src/transaction/validator.d.ts +3 -11
- package/dist/src/transaction/validator.d.ts.map +1 -1
- package/dist/src/transaction/validator.js +69 -28
- package/dist/src/transaction/validator.js.map +1 -1
- package/dist/src/transactor/network-transactor.d.ts +35 -0
- package/dist/src/transactor/network-transactor.d.ts.map +1 -1
- package/dist/src/transactor/network-transactor.js +146 -40
- package/dist/src/transactor/network-transactor.js.map +1 -1
- package/dist/src/transactor/transactor-source.d.ts +19 -5
- package/dist/src/transactor/transactor-source.d.ts.map +1 -1
- package/dist/src/transactor/transactor-source.js +43 -11
- package/dist/src/transactor/transactor-source.js.map +1 -1
- package/dist/src/transform/atomic-proxy.d.ts +35 -5
- package/dist/src/transform/atomic-proxy.d.ts.map +1 -1
- package/dist/src/transform/atomic-proxy.js +39 -7
- package/dist/src/transform/atomic-proxy.js.map +1 -1
- package/dist/src/transform/cache-source.d.ts +36 -5
- package/dist/src/transform/cache-source.d.ts.map +1 -1
- package/dist/src/transform/cache-source.js +84 -8
- package/dist/src/transform/cache-source.js.map +1 -1
- package/dist/src/transform/helpers.d.ts.map +1 -1
- package/dist/src/transform/helpers.js +8 -2
- package/dist/src/transform/helpers.js.map +1 -1
- package/dist/src/transform/tracker.d.ts +17 -2
- package/dist/src/transform/tracker.d.ts.map +1 -1
- package/dist/src/transform/tracker.js +66 -11
- package/dist/src/transform/tracker.js.map +1 -1
- package/dist/src/utility/backoff.d.ts +48 -0
- package/dist/src/utility/backoff.d.ts.map +1 -0
- package/dist/src/utility/backoff.js +60 -0
- package/dist/src/utility/backoff.js.map +1 -0
- package/dist/src/utility/pending.d.ts +1 -0
- package/dist/src/utility/pending.d.ts.map +1 -1
- package/dist/src/utility/pending.js +3 -1
- package/dist/src/utility/pending.js.map +1 -1
- package/package.json +4 -4
- package/src/blocks/block-store.ts +19 -1
- package/src/blocks/helpers.ts +3 -3
- package/src/btree/btree.ts +108 -63
- package/src/chain/chain.ts +11 -1
- package/src/cluster/index.ts +1 -0
- package/src/cluster/membership.ts +85 -0
- package/src/cluster/structs.ts +51 -1
- package/src/cohort-topic/addressing.ts +12 -4
- package/src/cohort-topic/antidos/bootstrap-evidence.ts +21 -9
- package/src/cohort-topic/antidos/replay-guard.ts +37 -0
- package/src/cohort-topic/antidos/topic-budget.ts +17 -2
- package/src/cohort-topic/coldstart.ts +48 -15
- package/src/cohort-topic/gossip/bus.ts +39 -2
- package/src/cohort-topic/gossip/view.ts +26 -1
- package/src/cohort-topic/member-engine.ts +36 -15
- package/src/cohort-topic/membership/publisher.ts +25 -33
- package/src/cohort-topic/membership/verifier.ts +119 -3
- package/src/cohort-topic/promotion.ts +23 -2
- package/src/cohort-topic/registration/renewal.ts +73 -1
- package/src/cohort-topic/registration/types.ts +15 -0
- package/src/cohort-topic/service.ts +41 -15
- package/src/cohort-topic/sig/payloads.ts +29 -9
- package/src/cohort-topic/traffic.ts +23 -1
- package/src/cohort-topic/walk.ts +95 -24
- package/src/cohort-topic/wire/codec.ts +12 -0
- package/src/cohort-topic/wire/index.ts +2 -0
- package/src/cohort-topic/wire/payloads.ts +14 -5
- package/src/cohort-topic/wire/primitives.ts +188 -0
- package/src/cohort-topic/wire/types.ts +136 -4
- package/src/cohort-topic/wire/validate.ts +168 -134
- package/src/collection/collection.ts +123 -40
- package/src/collection/struct.ts +44 -2
- package/src/collections/tree/tree.ts +42 -5
- package/src/index.ts +1 -0
- package/src/log/log.ts +37 -9
- package/src/log/struct.ts +5 -4
- package/src/matchmaking/wire.ts +25 -102
- package/src/network/i-key-network.ts +10 -0
- package/src/network/i-repo.ts +8 -0
- package/src/network/struct.ts +10 -0
- package/src/reactivity/push-state.ts +4 -37
- package/src/reactivity/wire-validate.ts +7 -81
- package/src/reactivity/wire.ts +3 -3
- package/src/testing/async-wait.ts +65 -0
- package/src/testing/index.ts +2 -0
- package/src/testing/test-transactor.ts +468 -0
- package/src/transaction/actions-engine.ts +8 -6
- package/src/transaction/coordinator.ts +498 -229
- package/src/transaction/errors.ts +91 -0
- package/src/transaction/index.ts +23 -3
- package/src/transaction/operations-hash.ts +196 -0
- package/src/transaction/read-dependency-collector.ts +78 -0
- package/src/transaction/session.ts +37 -9
- package/src/transaction/transaction.ts +211 -4
- package/src/transaction/validator.ts +73 -48
- package/src/transactor/network-transactor.ts +164 -49
- package/src/transactor/transactor-source.ts +47 -12
- package/src/transform/atomic-proxy.ts +92 -49
- package/src/transform/cache-source.ts +87 -9
- package/src/transform/helpers.ts +8 -2
- package/src/transform/tracker.ts +69 -11
- package/src/utility/backoff.ts +95 -0
- package/src/utility/pending.ts +3 -1
- package/src/transaction/context.ts +0 -103
|
@@ -20,6 +20,25 @@ export class NetworkTransactor {
|
|
|
20
20
|
dialTimeoutMs;
|
|
21
21
|
getRepo;
|
|
22
22
|
localChangeNotifier;
|
|
23
|
+
/**
|
|
24
|
+
* Per-transaction coordinator cache: `actionId → (blockId → resolved coordinator)`.
|
|
25
|
+
* {@link pend} populates it from its final (retry-adjusted) batch assignment; commit
|
|
26
|
+
* reads it via {@link resolveCoordinator} before falling back to a live
|
|
27
|
+
* `findCoordinator`, so a block's coordinator is resolved once per transaction across
|
|
28
|
+
* the pend→commit window instead of once at pend and again at commit.
|
|
29
|
+
*
|
|
30
|
+
* Keyed by `actionId`, which is unique per transaction, so an entry is only ever read
|
|
31
|
+
* by commits of the SAME transaction — the ones that immediately follow its pend. Once
|
|
32
|
+
* those finish, nothing reads the entry again (a later transaction has a fresh
|
|
33
|
+
* actionId), so it carries no cross-transaction staleness even if it lingers. The TTL
|
|
34
|
+
* and size cap in {@link txnCoordinatorsFor} are therefore only a memory backstop that
|
|
35
|
+
* reclaims entries from transactions that pend but never commit — NOT a staleness
|
|
36
|
+
* bound. This is why keying by actionId gives the same "thrown away when the
|
|
37
|
+
* transaction ends" safety as threading a Map through the call, without touching the
|
|
38
|
+
* ITransactor contract.
|
|
39
|
+
*/
|
|
40
|
+
txnCoordinatorCache = new Map();
|
|
41
|
+
static MAX_TXN_COORDINATOR_CACHE_ENTRIES = 1000;
|
|
23
42
|
constructor(init) {
|
|
24
43
|
this.keyNetwork = init.keyNetwork;
|
|
25
44
|
this.timeoutMs = init.timeoutMs;
|
|
@@ -59,41 +78,52 @@ export class NetworkTransactor {
|
|
|
59
78
|
catch (e) {
|
|
60
79
|
error = e;
|
|
61
80
|
}
|
|
62
|
-
// Second-chance retry:
|
|
63
|
-
//
|
|
81
|
+
// Second-chance retry: ONLY for a genuine no-response — a batch with no valid
|
|
82
|
+
// response, or a response missing an entry for a requested block id. An
|
|
83
|
+
// authoritative "absent" answer (a valid response that carries an entry for
|
|
84
|
+
// every requested block id, even one whose entry has only `state` and no
|
|
85
|
+
// materialized `block`) is FINAL and must not retry. A block that genuinely
|
|
86
|
+
// does not exist yet surfaces as `{ state: {} }` (an entry that is present) —
|
|
87
|
+
// retrying it doubles the round-trips on the common createOrOpen "does this
|
|
88
|
+
// block exist?" probe. Cross-member reconciliation for a missing block has
|
|
89
|
+
// already happened one layer down: CoordinatorRepo.get detects `isMissing` and
|
|
90
|
+
// consults cluster peers before it responds, so by the time an authoritative
|
|
91
|
+
// absent reaches here there is nothing left for a transactor-level retry to
|
|
92
|
+
// discover. See ticket txn-perf-authoritative-notfound.
|
|
64
93
|
const hasValidResponse = (b) => {
|
|
65
94
|
return b.request?.isResponse === true && b.request.response != null;
|
|
66
95
|
};
|
|
67
|
-
|
|
96
|
+
// A batch is answered when its response carries an entry for EVERY requested
|
|
97
|
+
// block id. An entry present with only `state` (no `block`) is an authoritative
|
|
98
|
+
// "absent", which counts as answered — not a gap.
|
|
99
|
+
const isAuthoritative = (b) => {
|
|
68
100
|
if (!hasValidResponse(b))
|
|
69
101
|
return false;
|
|
70
102
|
const resp = b.request.response;
|
|
71
|
-
return b.payload.
|
|
72
|
-
const entry = resp[bid];
|
|
73
|
-
return entry && typeof entry === 'object' && 'block' in entry && entry.block != null;
|
|
74
|
-
});
|
|
103
|
+
return b.payload.every(bid => resp[bid] !== undefined);
|
|
75
104
|
};
|
|
76
|
-
// Retry
|
|
77
|
-
//
|
|
78
|
-
const retryable = Array.from(allBatches(batches)).filter(b => !
|
|
105
|
+
// Retry only genuine no-response / partial-response batches. An authoritative
|
|
106
|
+
// absent answer is not retried.
|
|
107
|
+
const retryable = Array.from(allBatches(batches)).filter(b => !isAuthoritative(b));
|
|
79
108
|
if (retryable.length > 0 && Date.now() < expiration) {
|
|
80
109
|
log('get:retry retryable=%d', retryable.length);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
110
|
+
// Fan out the per-batch retries concurrently. Each root batch builds its own
|
|
111
|
+
// excluded-peer set and attaches its own `subsumedBy`, so the retry rounds are
|
|
112
|
+
// independent per root and safe to run in parallel.
|
|
113
|
+
const retryOutcomes = await Promise.allSettled(retryable.map(async (b) => {
|
|
114
|
+
const excluded = new Set([b.peerId, ...(b.excludedPeers ?? [])]);
|
|
115
|
+
const retries = await createBatchesForPayload(b.payload, b.payload, (gets, blockId, mergeWithGets) => [...(mergeWithGets ?? []), ...gets.filter(id => id === blockId)], Array.from(excluded), async (blockId, options) => this.keyNetwork.findCoordinator(await blockIdToBytes(blockId), options));
|
|
116
|
+
if (retries.length > 0) {
|
|
117
|
+
b.subsumedBy = [...(b.subsumedBy ?? []), ...retries];
|
|
118
|
+
await processBatches(retries, (batch) => this.getRepo(batch.peerId).get({ blockIds: batch.payload, context: blockGets.context }, { expiration, dialTimeoutMs: this.dialTimeoutMs }), batch => batch.payload, (gets, blockId, mergeWithGets) => [...(mergeWithGets ?? []), ...gets.filter(id => id === blockId)], expiration, async (blockId, options) => this.keyNetwork.findCoordinator(await blockIdToBytes(blockId), options));
|
|
119
|
+
}
|
|
120
|
+
}));
|
|
121
|
+
// First-error-wins: keep any pre-existing error, otherwise adopt the first
|
|
122
|
+
// rejection across the concurrent retries (retryable order is preserved).
|
|
123
|
+
for (const outcome of retryOutcomes) {
|
|
124
|
+
if (outcome.status === 'rejected' && !error) {
|
|
125
|
+
error = outcome.reason instanceof Error ? outcome.reason : new Error(String(outcome.reason));
|
|
91
126
|
}
|
|
92
|
-
}
|
|
93
|
-
catch (e) {
|
|
94
|
-
// keep original error if any
|
|
95
|
-
if (!error)
|
|
96
|
-
error = e;
|
|
97
127
|
}
|
|
98
128
|
}
|
|
99
129
|
// Cache the completed batches that had actual responses (not just coordinator not found)
|
|
@@ -335,15 +365,12 @@ export class NetworkTransactor {
|
|
|
335
365
|
}), batch => blockIdsForTransforms(batch.payload), transformForBlock, expiration, async (blockId, options) => this.keyNetwork.findCoordinator(await blockIdToBytes(blockId), options));
|
|
336
366
|
// Cache resolved coordinators for follow-up commit to hit the same peers
|
|
337
367
|
try {
|
|
338
|
-
const
|
|
339
|
-
|
|
340
|
-
for (const b of Array.from(allBatches(batches))) {
|
|
341
|
-
pn.recordCoordinator(await blockIdToBytes(b.blockId), b.peerId);
|
|
342
|
-
}
|
|
368
|
+
for (const b of Array.from(allBatches(batches))) {
|
|
369
|
+
this.keyNetwork.recordCoordinator?.(await blockIdToBytes(b.blockId), b.peerId);
|
|
343
370
|
}
|
|
344
371
|
}
|
|
345
372
|
catch (e) {
|
|
346
|
-
|
|
373
|
+
log('WARN: Failed to record coordinator hint %o', e);
|
|
347
374
|
}
|
|
348
375
|
}
|
|
349
376
|
catch (e) {
|
|
@@ -366,7 +393,7 @@ export class NetworkTransactor {
|
|
|
366
393
|
}
|
|
367
394
|
if (error) { // If any failures, cancel all pending actions as background microtask
|
|
368
395
|
log('pend:cancel actionId=%s', blockAction.actionId);
|
|
369
|
-
void Promise.resolve().then(() => this.cancelBatch(batches, { blockIds, actionId: blockAction.actionId }));
|
|
396
|
+
void Promise.resolve().then(() => this.cancelBatch(batches, { blockIds, actionId: blockAction.actionId })).catch(e => log('WARN: cancel after pend failure rejected: %o', e));
|
|
370
397
|
const stale = Array.from(allBatches(batches, b => b.request?.isResponse && !b.request.response.success));
|
|
371
398
|
if (stale.length > 0) { // Any active stale failures should preempt reporting connection or other potential transient errors (we have information)
|
|
372
399
|
log('pend:stale actionId=%s staleCount=%d', blockAction.actionId, stale.length);
|
|
@@ -379,6 +406,24 @@ export class NetworkTransactor {
|
|
|
379
406
|
}
|
|
380
407
|
// Collect replies back into result structure
|
|
381
408
|
const completed = Array.from(allBatches(batches, b => b.request?.isResponse && b.request.response.success));
|
|
409
|
+
// Seed the per-transaction coordinator cache from the final (retry-adjusted) batch
|
|
410
|
+
// assignment so the follow-up commit reuses pend's resolution without a fresh
|
|
411
|
+
// findCoordinator round or a hop through the optional recordCoordinator hint. We read
|
|
412
|
+
// blockIdsForTransforms(b.payload) rather than the anchor b.blockId so EVERY block a
|
|
413
|
+
// consolidated batch coordinates is recorded — and against the peer that actually
|
|
414
|
+
// pended it, since a block re-homed by a retry lands in the retry batch's payload.
|
|
415
|
+
// NOTE: this cache assumes cluster membership is stable for the transaction's
|
|
416
|
+
// lifetime — the coordinator resolved here is reused verbatim at commit. Transactions
|
|
417
|
+
// are short, so that holds today. If a future change lets clusters churn *within* a
|
|
418
|
+
// single transaction (e.g. very long-running commits), a cached coordinator could
|
|
419
|
+
// point at a peer no longer in the cohort; commit self-heals (a failed cached peer is
|
|
420
|
+
// excluded and re-resolved live by processBatches), at the cost of one wasted round-trip.
|
|
421
|
+
const txnCoordinators = this.txnCoordinatorsFor(blockAction.actionId);
|
|
422
|
+
for (const b of completed) {
|
|
423
|
+
for (const bid of blockIdsForTransforms(b.payload)) {
|
|
424
|
+
txnCoordinators.set(bid, b.peerId);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
382
427
|
log('pend:done actionId=%s ms=%d batches=%d', blockAction.actionId, Date.now() - t0, batches.length);
|
|
383
428
|
return {
|
|
384
429
|
success: true,
|
|
@@ -427,7 +472,7 @@ export class NetworkTransactor {
|
|
|
427
472
|
// Non-tail block commit failures should not fail the overall action once the tail has committed.
|
|
428
473
|
// Proceed and rely on reconciliation paths (e.g. reads with context) to finalize state on lagging peers.
|
|
429
474
|
try {
|
|
430
|
-
|
|
475
|
+
log('WARN: non-tail commit had errors; proceeding after tail commit: %s', error.message);
|
|
431
476
|
}
|
|
432
477
|
catch { /* ignore */ }
|
|
433
478
|
}
|
|
@@ -438,12 +483,18 @@ export class NetworkTransactor {
|
|
|
438
483
|
async commitBlock(blockId, blockIds, actionId, rev, tailId) {
|
|
439
484
|
const { batches: tailBatches, error: tailError } = await this.commitBlocks({ blockIds: [blockId], actionId, rev, tailId });
|
|
440
485
|
if (tailError) {
|
|
441
|
-
//
|
|
442
|
-
|
|
486
|
+
// commit is a pure attempt: stale → { success:false }, transient → throw. Cancellation
|
|
487
|
+
// is the CALLER's responsibility (coordinator cancelPhase; TransactorSource.transact),
|
|
488
|
+
// which owns the retry budget and the committed-vs-pending picture — self-cancelling here
|
|
489
|
+
// would tear down a pend a caller's retry loop is still working against, and double-cancel.
|
|
443
490
|
// Collect and return any active stale failures
|
|
444
491
|
const stale = Array.from(allBatches(tailBatches, b => b.request?.isResponse && !b.request.response.success));
|
|
445
492
|
if (stale.length > 0) {
|
|
446
|
-
|
|
493
|
+
// NOTE: a reason-only StaleFailure (success:false, no `missing`) lands here too and
|
|
494
|
+
// returns { missing: [], success:false } — the `reason` string is dropped rather than
|
|
495
|
+
// surfaced via `throw tailError`. Fine today (failure still propagates); if reason-only
|
|
496
|
+
// commit rejections ever need their diagnostic reason, gate this branch on non-empty missing.
|
|
497
|
+
return { missing: distinctBlockActionTransforms(stale.flatMap(b => b.request.response.missing).filter((x) => x !== undefined)), success: false };
|
|
447
498
|
}
|
|
448
499
|
throw tailError;
|
|
449
500
|
}
|
|
@@ -452,11 +503,13 @@ export class NetworkTransactor {
|
|
|
452
503
|
/** Attempts to commit a set of blocks, and handles failures and errors */
|
|
453
504
|
async commitBlocks({ blockIds, actionId, rev, tailId }) {
|
|
454
505
|
const expiration = Date.now() + this.timeoutMs;
|
|
455
|
-
|
|
506
|
+
// Thread the transaction's actionId so both the initial batch assembly and any
|
|
507
|
+
// per-block retry re-resolution prefer the coordinator pend already resolved.
|
|
508
|
+
const batches = await this.batchesForPayload(blockIds, blockIds, mergeBlocks, [], actionId);
|
|
456
509
|
log('commitBlocks actionId=%s rev=%d batches=%d', actionId, rev, batches.length);
|
|
457
510
|
let error;
|
|
458
511
|
try {
|
|
459
|
-
await processBatches(batches, (batch) => this.getRepo(batch.peerId).commit({ actionId, blockIds: batch.payload, rev, tailId }, { expiration, dialTimeoutMs: this.dialTimeoutMs }), batch => batch.payload, mergeBlocks, expiration, async (blockId, options) => this.
|
|
512
|
+
await processBatches(batches, (batch) => this.getRepo(batch.peerId).commit({ actionId, blockIds: batch.payload, rev, tailId }, { expiration, dialTimeoutMs: this.dialTimeoutMs }), batch => batch.payload, mergeBlocks, expiration, async (blockId, options) => this.resolveCoordinator(blockId, options, actionId));
|
|
460
513
|
}
|
|
461
514
|
catch (e) {
|
|
462
515
|
error = e;
|
|
@@ -478,8 +531,61 @@ export class NetworkTransactor {
|
|
|
478
531
|
}
|
|
479
532
|
;
|
|
480
533
|
/** Creates batches for a given payload, grouped by the coordinating peer for each block id */
|
|
481
|
-
async batchesForPayload(blockIds, payload, getBlockPayload, excludedPeers
|
|
482
|
-
|
|
534
|
+
async batchesForPayload(blockIds, payload, getBlockPayload, excludedPeers,
|
|
535
|
+
/** When set, prefer a coordinator this transaction already resolved at pend (see {@link resolveCoordinator}). */
|
|
536
|
+
actionId) {
|
|
537
|
+
return createBatchesForPayload(blockIds, payload, getBlockPayload, excludedPeers, async (blockId, options) => this.resolveCoordinator(blockId, options, actionId));
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Resolve the coordinator for `blockId`, preferring one this transaction already
|
|
541
|
+
* resolved during pend (the per-transaction cache) before falling back to a live
|
|
542
|
+
* `findCoordinator`. A cached coordinator that is in `excludedPeers` (already tried and
|
|
543
|
+
* failed during a retry) is skipped so a retry can't loop on a dead coordinator. A
|
|
544
|
+
* cache miss — including every call with no `actionId` (get/cancel) — never fails; it
|
|
545
|
+
* always falls through to live resolution.
|
|
546
|
+
*/
|
|
547
|
+
async resolveCoordinator(blockId, options, actionId) {
|
|
548
|
+
if (actionId !== undefined) {
|
|
549
|
+
const cached = this.txnCoordinatorCache.get(actionId)?.coordinators.get(blockId);
|
|
550
|
+
if (cached && !options.excludedPeers.some(p => p.toString() === cached.toString())) {
|
|
551
|
+
return cached;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
return this.keyNetwork.findCoordinator(await blockIdToBytes(blockId), options);
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* Get (creating if absent) the per-transaction coordinator map for `actionId`,
|
|
558
|
+
* refreshing its expiry and lazily sweeping expired sibling entries. See
|
|
559
|
+
* {@link txnCoordinatorCache} for why the TTL/size cap here is a memory backstop and
|
|
560
|
+
* not a staleness bound.
|
|
561
|
+
*/
|
|
562
|
+
txnCoordinatorsFor(actionId) {
|
|
563
|
+
const now = Date.now();
|
|
564
|
+
// Reclaim entries from transactions that pended but never committed. A live entry is
|
|
565
|
+
// never stale (unique actionId; read only by its own transaction's commit), so
|
|
566
|
+
// sweeping lazily on write is safe.
|
|
567
|
+
for (const [aid, entry] of this.txnCoordinatorCache) {
|
|
568
|
+
if (entry.expires <= now)
|
|
569
|
+
this.txnCoordinatorCache.delete(aid);
|
|
570
|
+
}
|
|
571
|
+
// Comfortably covers a normal pend→commit gap (~2 op budgets) with a fixed floor;
|
|
572
|
+
// an entry outliving this only loses the optimization (commit re-resolves live),
|
|
573
|
+
// never correctness.
|
|
574
|
+
const ttlMs = Math.max(this.timeoutMs * 2, 60_000);
|
|
575
|
+
const existing = this.txnCoordinatorCache.get(actionId);
|
|
576
|
+
if (existing) {
|
|
577
|
+
existing.expires = now + ttlMs;
|
|
578
|
+
return existing.coordinators;
|
|
579
|
+
}
|
|
580
|
+
const created = { coordinators: new Map(), expires: now + ttlMs };
|
|
581
|
+
this.txnCoordinatorCache.set(actionId, created);
|
|
582
|
+
while (this.txnCoordinatorCache.size > NetworkTransactor.MAX_TXN_COORDINATOR_CACHE_ENTRIES) {
|
|
583
|
+
const oldest = this.txnCoordinatorCache.keys().next().value;
|
|
584
|
+
if (oldest == null || oldest === actionId)
|
|
585
|
+
break;
|
|
586
|
+
this.txnCoordinatorCache.delete(oldest);
|
|
587
|
+
}
|
|
588
|
+
return created.coordinators;
|
|
483
589
|
}
|
|
484
590
|
/** Cancels a pending transaction by canceling all blocks associated with the transaction, including failed peers */
|
|
485
591
|
async cancelBatch(batches, actionRef) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-transactor.js","sourceRoot":"","sources":["../../../src/transactor/network-transactor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"network-transactor.js","sourceRoot":"","sources":["../../../src/transactor/network-transactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,25 @@
|
|
|
1
|
-
import type { IBlock, BlockId, BlockHeader, ITransactor, ActionId, StaleFailure, ActionContext, BlockType, BlockSource, Transforms } from "../index.js";
|
|
1
|
+
import type { IBlock, BlockId, BlockHeader, ITransactor, ActionId, StaleFailure, ActionContext, BlockType, BlockSource, ReadPurpose, Transforms } from "../index.js";
|
|
2
2
|
import type { ReadDependency } from "../transaction/transaction.js";
|
|
3
|
+
import { ReadDependencyCollector } from "../transaction/read-dependency-collector.js";
|
|
3
4
|
export declare class TransactorSource<TBlock extends IBlock> implements BlockSource<TBlock> {
|
|
4
5
|
private readonly collectionId;
|
|
5
6
|
private readonly transactor;
|
|
6
7
|
actionContext: ActionContext | undefined;
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
/** Shared with this collection's CacheSource so cache hits also record dependencies.
|
|
9
|
+
* Defaults to a private instance so internal log-walk sources (which never need a
|
|
10
|
+
* transaction read set) work standalone. */
|
|
11
|
+
private readonly collector;
|
|
12
|
+
/** Last revision observed per id, so CacheSource can learn the revision on a miss-load
|
|
13
|
+
* (it calls {@link getReadRevision} right after this source serves the block). */
|
|
14
|
+
private readRevisions;
|
|
15
|
+
constructor(collectionId: BlockId, transactor: ITransactor, actionContext: ActionContext | undefined, collector?: ReadDependencyCollector);
|
|
9
16
|
createBlockHeader(type: BlockType, newId?: BlockId): BlockHeader;
|
|
10
17
|
generateId(): BlockId;
|
|
11
|
-
tryGet(id: BlockId): Promise<TBlock | undefined>;
|
|
18
|
+
tryGet(id: BlockId, purpose?: ReadPurpose): Promise<TBlock | undefined>;
|
|
19
|
+
/** The revision observed the last time this source served {@link id} (from its committed
|
|
20
|
+
* state), or undefined if this source has never served it. CacheSource reads this on a
|
|
21
|
+
* miss-load to learn the revision to record and store. */
|
|
22
|
+
getReadRevision(id: BlockId): number | undefined;
|
|
12
23
|
getReadDependencies(): ReadDependency[];
|
|
13
24
|
clearReadDependencies(): void;
|
|
14
25
|
/**
|
|
@@ -21,8 +32,11 @@ export declare class TransactorSource<TBlock extends IBlock> implements BlockSou
|
|
|
21
32
|
* is transitioning to a new block. Ignored if the given headerId is not present in the transforms.
|
|
22
33
|
* @param tailId - The Id of the collection's log tail block. If specified, this block's transform is performed next
|
|
23
34
|
* (prior to the rest of the block operations), to resolve the "winner" of a race to commit to the collection.
|
|
35
|
+
* @param priority - Aged, advisory retry priority (default 0). Rides on the pend so a repeatedly-losing
|
|
36
|
+
* single-collection sync out-ranks fresh rivals in a concurrent race (`resolveRace`); fairness-only, never
|
|
37
|
+
* affects validity. Omitted from the pend when 0 so the common first-attempt pend serializes exactly as before.
|
|
24
38
|
* @returns A promise that resolves to undefined if the action is successful, or a StaleFailure if the action is stale.
|
|
25
39
|
*/
|
|
26
|
-
transact(transform: Transforms, actionId: ActionId, rev: number, headerId: BlockId, tailId: BlockId): Promise<undefined | StaleFailure>;
|
|
40
|
+
transact(transform: Transforms, actionId: ActionId, rev: number, headerId: BlockId, tailId: BlockId, priority?: number): Promise<undefined | StaleFailure>;
|
|
27
41
|
}
|
|
28
42
|
//# sourceMappingURL=transactor-source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactor-source.d.ts","sourceRoot":"","sources":["../../../src/transactor/transactor-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"transactor-source.d.ts","sourceRoot":"","sources":["../../../src/transactor/transactor-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrK,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAEtF,qBAAa,gBAAgB,CAAC,MAAM,SAAS,MAAM,CAAE,YAAW,WAAW,CAAC,MAAM,CAAC;IAUjF,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU;IACpB,aAAa,EAAE,aAAa,GAAG,SAAS;IAXhD;;iDAE6C;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD;uFACmF;IACnF,OAAO,CAAC,aAAa,CAA8B;gBAGjC,YAAY,EAAE,OAAO,EACrB,UAAU,EAAE,WAAW,EACjC,aAAa,EAAE,aAAa,GAAG,SAAS,EAC/C,SAAS,CAAC,EAAE,uBAAuB;IAKpC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW;IAQhE,UAAU,IAAI,OAAO;IAKf,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,GAAE,WAAqB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA2BtF;;+DAE2D;IAC3D,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAIhD,mBAAmB,IAAI,cAAc,EAAE;IAIvC,qBAAqB,IAAI,IAAI;IAI7B;;;;;;;;;;;;;;OAcG;IACG,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAuB3J"}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import { randomBytes } from '@noble/hashes/utils.js';
|
|
2
2
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
3
|
+
import { ReadDependencyCollector } from "../transaction/read-dependency-collector.js";
|
|
3
4
|
export class TransactorSource {
|
|
4
5
|
collectionId;
|
|
5
6
|
transactor;
|
|
6
7
|
actionContext;
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
/** Shared with this collection's CacheSource so cache hits also record dependencies.
|
|
9
|
+
* Defaults to a private instance so internal log-walk sources (which never need a
|
|
10
|
+
* transaction read set) work standalone. */
|
|
11
|
+
collector;
|
|
12
|
+
/** Last revision observed per id, so CacheSource can learn the revision on a miss-load
|
|
13
|
+
* (it calls {@link getReadRevision} right after this source serves the block). */
|
|
14
|
+
readRevisions = new Map();
|
|
15
|
+
constructor(collectionId, transactor, actionContext, collector) {
|
|
9
16
|
this.collectionId = collectionId;
|
|
10
17
|
this.transactor = transactor;
|
|
11
18
|
this.actionContext = actionContext;
|
|
19
|
+
this.collector = collector ?? new ReadDependencyCollector();
|
|
12
20
|
}
|
|
13
21
|
createBlockHeader(type, newId) {
|
|
14
22
|
return {
|
|
@@ -21,22 +29,43 @@ export class TransactorSource {
|
|
|
21
29
|
// 256-bits to fully utilize DHT address space
|
|
22
30
|
return uint8ArrayToString(randomBytes(32), 'base64url');
|
|
23
31
|
}
|
|
24
|
-
async tryGet(id) {
|
|
32
|
+
async tryGet(id, purpose = 'value') {
|
|
25
33
|
const result = await this.transactor.get({ blockIds: [id], context: this.actionContext });
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
34
|
+
// Guard the per-key entry: some transactors return a sparse result that omits `id`
|
|
35
|
+
// entirely (e.g. block genuinely not found), so `result` is a truthy object but
|
|
36
|
+
// `result[id]` is undefined. Destructuring that would throw a TypeError.
|
|
37
|
+
const entry = result?.[id];
|
|
38
|
+
if (entry) {
|
|
39
|
+
const { block, state } = entry;
|
|
40
|
+
// Record a read dependency only for a block that actually exists. A transactor may return a
|
|
41
|
+
// populated entry with `block: undefined` for a genuinely-missing block (TestTransactor does;
|
|
42
|
+
// the Network transactor always populates the key); recording there would add a phantom
|
|
43
|
+
// dependency for a nonexistent block. This makes the "absent reads nothing" contract uniform
|
|
44
|
+
// with the sparse-result case (entry omitted) — see transactor-source.spec.ts sparse test.
|
|
45
|
+
if (block) {
|
|
46
|
+
// Record read dependency for optimistic concurrency control, carrying the caller's
|
|
47
|
+
// read purpose (default `value`) so a purely-structural navigation read can later be
|
|
48
|
+
// dropped from the conflict set (see ReadDependencyCollector / Theorem 5).
|
|
49
|
+
const rev = state.latest?.rev ?? 0;
|
|
50
|
+
this.collector.record(id, rev, purpose);
|
|
51
|
+
this.readRevisions.set(id, rev);
|
|
52
|
+
}
|
|
30
53
|
// TODO: if the state reports that there is a pending action, record this so that we are sure to update before syncing
|
|
31
54
|
//state.pendings
|
|
32
55
|
return block;
|
|
33
56
|
}
|
|
34
57
|
}
|
|
58
|
+
/** The revision observed the last time this source served {@link id} (from its committed
|
|
59
|
+
* state), or undefined if this source has never served it. CacheSource reads this on a
|
|
60
|
+
* miss-load to learn the revision to record and store. */
|
|
61
|
+
getReadRevision(id) {
|
|
62
|
+
return this.readRevisions.get(id);
|
|
63
|
+
}
|
|
35
64
|
getReadDependencies() {
|
|
36
|
-
return this.
|
|
65
|
+
return this.collector.getReadDependencies();
|
|
37
66
|
}
|
|
38
67
|
clearReadDependencies() {
|
|
39
|
-
this.
|
|
68
|
+
this.collector.clear();
|
|
40
69
|
}
|
|
41
70
|
/**
|
|
42
71
|
* Attempts to apply the given transforms in a transactional manner.
|
|
@@ -48,10 +77,13 @@ export class TransactorSource {
|
|
|
48
77
|
* is transitioning to a new block. Ignored if the given headerId is not present in the transforms.
|
|
49
78
|
* @param tailId - The Id of the collection's log tail block. If specified, this block's transform is performed next
|
|
50
79
|
* (prior to the rest of the block operations), to resolve the "winner" of a race to commit to the collection.
|
|
80
|
+
* @param priority - Aged, advisory retry priority (default 0). Rides on the pend so a repeatedly-losing
|
|
81
|
+
* single-collection sync out-ranks fresh rivals in a concurrent race (`resolveRace`); fairness-only, never
|
|
82
|
+
* affects validity. Omitted from the pend when 0 so the common first-attempt pend serializes exactly as before.
|
|
51
83
|
* @returns A promise that resolves to undefined if the action is successful, or a StaleFailure if the action is stale.
|
|
52
84
|
*/
|
|
53
|
-
async transact(transform, actionId, rev, headerId, tailId) {
|
|
54
|
-
const pendResult = await this.transactor.pend({ transforms: transform, actionId, rev, policy: 'r' });
|
|
85
|
+
async transact(transform, actionId, rev, headerId, tailId, priority = 0) {
|
|
86
|
+
const pendResult = await this.transactor.pend({ transforms: transform, actionId, rev, policy: 'r', ...(priority > 0 ? { priority } : {}) });
|
|
55
87
|
if (!pendResult.success) {
|
|
56
88
|
return pendResult;
|
|
57
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactor-source.js","sourceRoot":"","sources":["../../../src/transactor/transactor-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"transactor-source.js","sourceRoot":"","sources":["../../../src/transactor/transactor-source.ts"],"names":[],"mappings":"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"}
|