@optimystic/db-p2p 0.22.0 → 0.24.1
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/cluster/client.d.ts +10 -0
- package/dist/src/cluster/client.d.ts.map +1 -1
- package/dist/src/cluster/client.js +30 -1
- package/dist/src/cluster/client.js.map +1 -1
- package/dist/src/cluster/cluster-repo.d.ts +39 -14
- package/dist/src/cluster/cluster-repo.d.ts.map +1 -1
- package/dist/src/cluster/cluster-repo.js +226 -119
- package/dist/src/cluster/cluster-repo.js.map +1 -1
- package/dist/src/cluster/service.d.ts +32 -1
- package/dist/src/cluster/service.d.ts.map +1 -1
- package/dist/src/cluster/service.js +43 -2
- package/dist/src/cluster/service.js.map +1 -1
- package/dist/src/cohort-topic/host.js +34 -11
- package/dist/src/cohort-topic/host.js.map +1 -1
- package/dist/src/cohort-topic/stream-util.d.ts +37 -7
- package/dist/src/cohort-topic/stream-util.d.ts.map +1 -1
- package/dist/src/cohort-topic/stream-util.js +77 -19
- package/dist/src/cohort-topic/stream-util.js.map +1 -1
- package/dist/src/dispute/dispute-service.d.ts.map +1 -1
- package/dist/src/dispute/dispute-service.js +9 -3
- package/dist/src/dispute/dispute-service.js.map +1 -1
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/libp2p-key-network.d.ts +88 -2
- package/dist/src/libp2p-key-network.d.ts.map +1 -1
- package/dist/src/libp2p-key-network.js +134 -28
- package/dist/src/libp2p-key-network.js.map +1 -1
- package/dist/src/libp2p-node-base.d.ts.map +1 -1
- package/dist/src/libp2p-node-base.js +25 -1
- package/dist/src/libp2p-node-base.js.map +1 -1
- package/dist/src/logger.d.ts +17 -1
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js +19 -2
- package/dist/src/logger.js.map +1 -1
- package/dist/src/matchmaking/query-transport.js +3 -3
- package/dist/src/matchmaking/query-transport.js.map +1 -1
- package/dist/src/owned-block-seed.d.ts +6 -3
- package/dist/src/owned-block-seed.d.ts.map +1 -1
- package/dist/src/owned-block-seed.js +16 -3
- package/dist/src/owned-block-seed.js.map +1 -1
- package/dist/src/peer-address-book.d.ts +72 -0
- package/dist/src/peer-address-book.d.ts.map +1 -0
- package/dist/src/peer-address-book.js +123 -0
- package/dist/src/peer-address-book.js.map +1 -0
- package/dist/src/reactivity/notify-transport.d.ts +4 -4
- package/dist/src/reactivity/notify-transport.js +6 -6
- package/dist/src/reactivity/notify-transport.js.map +1 -1
- package/dist/src/reactivity/push-state-gossip.js +2 -2
- package/dist/src/reactivity/push-state-gossip.js.map +1 -1
- package/dist/src/reactivity/recover-transport.d.ts +6 -2
- package/dist/src/reactivity/recover-transport.d.ts.map +1 -1
- package/dist/src/reactivity/recover-transport.js +7 -3
- package/dist/src/reactivity/recover-transport.js.map +1 -1
- package/dist/src/repo/client.d.ts.map +1 -1
- package/dist/src/repo/client.js +11 -2
- package/dist/src/repo/client.js.map +1 -1
- package/dist/src/repo/cluster-coordinator.d.ts +30 -0
- package/dist/src/repo/cluster-coordinator.d.ts.map +1 -1
- package/dist/src/repo/cluster-coordinator.js +95 -3
- package/dist/src/repo/cluster-coordinator.js.map +1 -1
- package/dist/src/repo/coordinator-repo.d.ts +62 -9
- package/dist/src/repo/coordinator-repo.d.ts.map +1 -1
- package/dist/src/repo/coordinator-repo.js +242 -73
- package/dist/src/repo/coordinator-repo.js.map +1 -1
- package/dist/src/rn.d.ts +3 -0
- package/dist/src/rn.d.ts.map +1 -1
- package/dist/src/rn.js +3 -0
- package/dist/src/rn.js.map +1 -1
- package/dist/src/storage/cached-raw-storage.d.ts +83 -0
- package/dist/src/storage/cached-raw-storage.d.ts.map +1 -0
- package/dist/src/storage/cached-raw-storage.js +152 -0
- package/dist/src/storage/cached-raw-storage.js.map +1 -0
- package/dist/src/storage/cached-store-driver.d.ts +186 -0
- package/dist/src/storage/cached-store-driver.d.ts.map +1 -0
- package/dist/src/storage/cached-store-driver.js +775 -0
- package/dist/src/storage/cached-store-driver.js.map +1 -0
- package/dist/src/storage/i-raw-storage.d.ts +12 -5
- package/dist/src/storage/i-raw-storage.d.ts.map +1 -1
- package/dist/src/storage/shared-cache-pool.d.ts +234 -0
- package/dist/src/storage/shared-cache-pool.d.ts.map +1 -0
- package/dist/src/storage/shared-cache-pool.js +354 -0
- package/dist/src/storage/shared-cache-pool.js.map +1 -0
- package/dist/src/testing/cohort-topic-mesh-harness.d.ts +13 -6
- package/dist/src/testing/cohort-topic-mesh-harness.d.ts.map +1 -1
- package/dist/src/testing/cohort-topic-mesh-harness.js +15 -6
- package/dist/src/testing/cohort-topic-mesh-harness.js.map +1 -1
- package/dist/src/testing/raw-storage-conformance.d.ts +2 -1
- package/dist/src/testing/raw-storage-conformance.d.ts.map +1 -1
- package/dist/src/testing/raw-storage-conformance.js +35 -2
- package/dist/src/testing/raw-storage-conformance.js.map +1 -1
- package/package.json +3 -3
- package/readme.md +668 -668
- package/src/cluster/block-transfer.ts +424 -424
- package/src/cluster/client.ts +119 -88
- package/src/cluster/cluster-error.ts +64 -64
- package/src/cluster/cluster-policy.ts +203 -203
- package/src/cluster/cluster-repo.ts +242 -122
- package/src/cluster/cluster-size-coupling.ts +45 -45
- package/src/cluster/commit-cert.ts +139 -139
- package/src/cluster/i-transaction-state-store.ts +43 -43
- package/src/cluster/memory-transaction-state-store.ts +56 -56
- package/src/cluster/peer-key-binding.ts +37 -37
- package/src/cluster/persistent-transaction-state-store.ts +92 -92
- package/src/cluster/quorum-restore.ts +223 -223
- package/src/cluster/reconcile-block.ts +203 -203
- package/src/cluster/service.ts +293 -241
- package/src/cluster/supermajority-coupling.ts +37 -37
- package/src/cohort-topic/bootstrap-evidence-builder.ts +122 -122
- package/src/cohort-topic/bootstrap-evidence-verifiers.ts +132 -132
- package/src/cohort-topic/bootstrap-parent-reference.ts +159 -159
- package/src/cohort-topic/change-bridge.ts +109 -109
- package/src/cohort-topic/cohort-gossip-driver.ts +231 -231
- package/src/cohort-topic/cohort-gossip-transport.ts +84 -84
- package/src/cohort-topic/fret-trust-anchor.ts +153 -153
- package/src/cohort-topic/host.ts +42 -11
- package/src/cohort-topic/index.ts +13 -13
- package/src/cohort-topic/membership-publish-sink.ts +20 -20
- package/src/cohort-topic/membership-source.ts +68 -68
- package/src/cohort-topic/peer-codec.ts +31 -31
- package/src/cohort-topic/peer-sig.ts +86 -86
- package/src/cohort-topic/protocols.ts +71 -71
- package/src/cohort-topic/reactivity-membership-gate.ts +77 -77
- package/src/cohort-topic/size-estimator.ts +16 -16
- package/src/cohort-topic/stream-util.ts +79 -19
- package/src/cohort-topic/threshold-crypto.ts +239 -239
- package/src/cohort-topic/topic-router.ts +77 -77
- package/src/dispute/arbitrator-selection.ts +138 -138
- package/src/dispute/cascade.ts +524 -524
- package/src/dispute/dispute-service.ts +11 -5
- package/src/dispute/invalidation.ts +625 -625
- package/src/inbound-authorization.ts +190 -190
- package/src/index.ts +52 -49
- package/src/libp2p-key-network.ts +1120 -990
- package/src/libp2p-node-base.ts +1675 -1651
- package/src/libp2p-node-rn.ts +30 -30
- package/src/libp2p-node.ts +36 -36
- package/src/logger.ts +19 -2
- package/src/matchmaking/aggregate-counts.ts +104 -104
- package/src/matchmaking/index.ts +20 -20
- package/src/matchmaking/module.ts +363 -363
- package/src/matchmaking/protocols.ts +51 -51
- package/src/matchmaking/provider-manager.ts +95 -95
- package/src/matchmaking/query-handler.ts +88 -88
- package/src/matchmaking/query-transport.ts +3 -3
- package/src/matchmaking/seeker-manager.ts +64 -64
- package/src/matchmaking/seeker-walk-client.ts +293 -293
- package/src/matchmaking/traffic-validation.ts +195 -195
- package/src/optimystic-node.ts +36 -36
- package/src/owned-block-seed.ts +53 -40
- package/src/peer-address-book.ts +149 -0
- package/src/protocol-limits.ts +33 -33
- package/src/reactivity/forwarder-host.ts +438 -438
- package/src/reactivity/index.ts +19 -19
- package/src/reactivity/notify-transport.ts +144 -144
- package/src/reactivity/origination-manager.ts +192 -192
- package/src/reactivity/protocols.ts +61 -61
- package/src/reactivity/push-state-gossip.ts +291 -291
- package/src/reactivity/recover-transport.ts +7 -3
- package/src/reactivity/rotation-rereg-scheduler.ts +256 -256
- package/src/reactivity/subscriber-registry.ts +96 -96
- package/src/reactivity/subscription-manager.ts +450 -450
- package/src/reactivity/topic-bytes.ts +37 -37
- package/src/repo/client.ts +12 -2
- package/src/repo/cluster-coordinator.ts +99 -3
- package/src/repo/coordinator-repo.ts +281 -74
- package/src/repo/types.ts +7 -7
- package/src/rn.ts +39 -36
- package/src/rpc-deadline.ts +45 -45
- package/src/storage/arachnode-partition.ts +74 -74
- package/src/storage/cached-raw-storage.ts +180 -0
- package/src/storage/cached-store-driver.ts +859 -0
- package/src/storage/i-kv-store.ts +8 -8
- package/src/storage/i-raw-storage.ts +12 -5
- package/src/storage/kv-raw-storage.ts +135 -135
- package/src/storage/memory-kv-store.ts +28 -28
- package/src/storage/memory-storage.ts +25 -25
- package/src/storage/memory-store-driver.ts +157 -157
- package/src/storage/raw-store-codec.ts +42 -42
- package/src/storage/raw-store-driver.ts +80 -80
- package/src/storage/ring-selector.ts +317 -317
- package/src/storage/ring-shift-coordinator.ts +271 -271
- package/src/storage/shared-cache-pool.ts +452 -0
- package/src/storage/storage-repo.ts +1014 -1014
- package/src/testing/cohort-topic-mesh-harness.ts +673 -663
- package/src/testing/index.ts +8 -8
- package/src/testing/matchmaking-mesh-harness.ts +475 -475
- package/src/testing/raw-storage-conformance.ts +453 -417
- package/src/testing/reactivity-mesh-harness.ts +922 -922
- package/dist/src/storage/restoration-coordinator-v2.d.ts +0 -67
- package/dist/src/storage/restoration-coordinator-v2.d.ts.map +0 -1
- package/dist/src/storage/restoration-coordinator-v2.js +0 -172
- package/dist/src/storage/restoration-coordinator-v2.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispute-service.js","sourceRoot":"","sources":["../../../src/dispute/dispute-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dispute-service.js","sourceRoot":"","sources":["../../../src/dispute/dispute-service.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -16,6 +16,9 @@ export * from "./repo/service.js";
|
|
|
16
16
|
export * from "./storage/block-storage.js";
|
|
17
17
|
export * from "./storage/raw-store-driver.js";
|
|
18
18
|
export * from "./storage/kv-raw-storage.js";
|
|
19
|
+
export * from "./storage/shared-cache-pool.js";
|
|
20
|
+
export * from "./storage/cached-store-driver.js";
|
|
21
|
+
export * from "./storage/cached-raw-storage.js";
|
|
19
22
|
export * from "./storage/memory-store-driver.js";
|
|
20
23
|
export * from "./storage/memory-storage.js";
|
|
21
24
|
export * from "./storage/i-block-storage.js";
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -16,6 +16,9 @@ export * from "./repo/service.js";
|
|
|
16
16
|
export * from "./storage/block-storage.js";
|
|
17
17
|
export * from "./storage/raw-store-driver.js";
|
|
18
18
|
export * from "./storage/kv-raw-storage.js";
|
|
19
|
+
export * from "./storage/shared-cache-pool.js";
|
|
20
|
+
export * from "./storage/cached-store-driver.js";
|
|
21
|
+
export * from "./storage/cached-raw-storage.js";
|
|
19
22
|
export * from "./storage/memory-store-driver.js";
|
|
20
23
|
export * from "./storage/memory-storage.js";
|
|
21
24
|
export * from "./storage/i-block-storage.js";
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
|
@@ -52,8 +52,21 @@ export declare class FindCoordinatorError extends Error {
|
|
|
52
52
|
readonly code: FindCoordinatorErrorCode;
|
|
53
53
|
constructor(code: FindCoordinatorErrorCode, message: string);
|
|
54
54
|
}
|
|
55
|
+
/** Snapshot format this build writes and is willing to read. Bump on any incompatible change. */
|
|
56
|
+
export declare const PERSISTED_STATE_VERSION: 2;
|
|
57
|
+
/**
|
|
58
|
+
* On-disk snapshot of what this node learned about the network last run.
|
|
59
|
+
*
|
|
60
|
+
* `version` is a compatibility fence, not a migration hook: a snapshot that does not carry
|
|
61
|
+
* `PERSISTED_STATE_VERSION` is discarded whole rather than translated. Version 2 exists because
|
|
62
|
+
* FRET 1.0.0-beta.1 made `SerializedPeerEntry.avgLatencyMs` nullable, where `null` means "never
|
|
63
|
+
* measured". Earlier FRET wrote `0` for that case, and 0 now reads as a genuine zero-millisecond
|
|
64
|
+
* round trip — the best possible score, ahead of every honestly measured peer. Since relevance
|
|
65
|
+
* drives next-hop preference *and* capacity eviction, importing such a table would both misroute
|
|
66
|
+
* and permanently evict good peers in favour of phantoms.
|
|
67
|
+
*/
|
|
55
68
|
export interface PersistedNetworkState {
|
|
56
|
-
version:
|
|
69
|
+
version: typeof PERSISTED_STATE_VERSION;
|
|
57
70
|
networkHighWaterMark: number;
|
|
58
71
|
lastConnectedTimestamp: number;
|
|
59
72
|
consecutiveIsolatedSessions: number;
|
|
@@ -152,6 +165,17 @@ export declare class Libp2pKeyPeerNetwork implements IKeyNetwork, IPeerNetwork {
|
|
|
152
165
|
private networkHighWaterMark;
|
|
153
166
|
private lastConnectedTime;
|
|
154
167
|
private consecutiveIsolatedSessions;
|
|
168
|
+
/**
|
|
169
|
+
* NOTE: diagnostic-only — no decision consults this any more. It used to gate the
|
|
170
|
+
* coordinator retry window, but it is computed once at construction
|
|
171
|
+
* (`bootstrapNodes.length > 0` in `libp2p-node-base.ts`) and never re-derived, so a node
|
|
172
|
+
* configured with a bootstrap address it has never reached read as "company is coming"
|
|
173
|
+
* forever; {@link retryCouldImprove} asks libp2p for live evidence instead. It still earns
|
|
174
|
+
* its keep in the `retry-futile` log line ("configured
|
|
175
|
+
* to expect company" vs. "solo by design"). Drop it, or re-derive it from live state, when
|
|
176
|
+
* the constructor becomes an options bag — removing the positional parameter now would
|
|
177
|
+
* churn ~50 construction sites in `test/libp2p-key-network.spec.ts` for no behaviour change.
|
|
178
|
+
*/
|
|
155
179
|
private readonly networkMode;
|
|
156
180
|
private readonly persistence?;
|
|
157
181
|
constructor(libp2p: Libp2p,
|
|
@@ -203,7 +227,62 @@ export declare class Libp2pKeyPeerNetwork implements IKeyNetwork, IPeerNetwork {
|
|
|
203
227
|
*/
|
|
204
228
|
private updateNetworkObservations;
|
|
205
229
|
initFromPersistedState(): Promise<void>;
|
|
206
|
-
|
|
230
|
+
/**
|
|
231
|
+
* Can another attempt plausibly return a BETTER answer than this one did? Consulted ONLY
|
|
232
|
+
* when the current attempt found no candidate and the node holds zero connections — i.e.
|
|
233
|
+
* purely to decide whether the 500ms inter-attempt sleep is worth paying.
|
|
234
|
+
*
|
|
235
|
+
* Answered from evidence available NOW, never from configuration or history (`networkMode`
|
|
236
|
+
* is frozen at construction and `networkHighWaterMark` is monotonic, so both used to keep
|
|
237
|
+
* the window open forever on a node that could never fill it):
|
|
238
|
+
* - a non-self candidate in the FRET neighbourhood for this key — a peer we know of and
|
|
239
|
+
* route to; a connection to it landing during the sleep makes it selectable.
|
|
240
|
+
* - a dial in flight (`queued` / `active` in libp2p's dial queue) — a connection attempt
|
|
241
|
+
* that can complete inside the sleep. This is the signal that covers a
|
|
242
|
+
* configured-but-not-yet-reached bootstrap peer: while its dial runs, the window is
|
|
243
|
+
* worth paying; once the dial has failed, it is not.
|
|
244
|
+
*
|
|
245
|
+
* Neither present → nothing this call can wait for; break to the last-resort tier.
|
|
246
|
+
*
|
|
247
|
+
* NOTE: accepted regression — a node with no known peers and no dial in flight that
|
|
248
|
+
* received an INBOUND connection during a sleep it now skips will route that one lookup to
|
|
249
|
+
* self instead of to the arriving peer. A self pick is never cached, so the next lookup
|
|
250
|
+
* picks the peer up; the benefit is that every genuinely isolated lookup stops paying ~1s
|
|
251
|
+
* per block. Inbound reachability is deliberately NOT a futility signal: it holds for
|
|
252
|
+
* nearly every node with a listen address, so it would neuter the test.
|
|
253
|
+
* NOTE: deliberately no `peerStore` scan — "we have a record of a peer" is not "a peer can
|
|
254
|
+
* arrive in the next 500ms". A peerStore entry with no FRET entry and no in-flight dial is
|
|
255
|
+
* a peer nobody is currently attempting, and the scan is an async datastore iteration on a
|
|
256
|
+
* per-lookup hot path.
|
|
257
|
+
*/
|
|
258
|
+
private retryCouldImprove;
|
|
259
|
+
/**
|
|
260
|
+
* Number of dials libp2p is currently attempting (`queued` or `active`) — a connection
|
|
261
|
+
* that can plausibly complete inside the inter-attempt sleep.
|
|
262
|
+
*
|
|
263
|
+
* Over-inclusive by design: the queue may hold a dial to an excluded, banned, or
|
|
264
|
+
* foreign-network peer. That keeps the retry window (conservative, matches the behaviour
|
|
265
|
+
* before the futility test existed); cross-referencing it would cost more than the sleep
|
|
266
|
+
* it saves. `getDialQueue` is non-optional on the Libp2p interface, so an absent method
|
|
267
|
+
* only ever means a test mock — treated as "no evidence of an in-flight dial", exactly as
|
|
268
|
+
* `getConnections?.()` is handled elsewhere.
|
|
269
|
+
*
|
|
270
|
+
* NOTE: this bounds — it does not eliminate — the futile window for the motivating case (a
|
|
271
|
+
* node whose only configured bootstrap is unreachable). FRET re-probes such a peer at most
|
|
272
|
+
* once per its capped 32s backoff (`fret-service.ts` `recordBackoff`: base 1000ms × factor
|
|
273
|
+
* ≤32), and each probe's dial can sit `active` for libp2p's 10s `DIAL_TIMEOUT` — so up to
|
|
274
|
+
* roughly a third of wall-clock still has a dial in flight, and lookups in those stretches
|
|
275
|
+
* still pay ~1s. Paying there is correct (a succeeding probe makes the peer selectable);
|
|
276
|
+
* revisit only if either upstream constant moves far enough to make the duty cycle ~1.
|
|
277
|
+
*/
|
|
278
|
+
private dialsInFlight;
|
|
279
|
+
/**
|
|
280
|
+
* The caller-independent half of eligibility: this peer is neither excluded by the caller
|
|
281
|
+
* nor banned by reputation. Shared by all three places `findCoordinator` narrows a candidate
|
|
282
|
+
* list — the FRET tier, the connected-peer fallback, and the retry-futility input — so the
|
|
283
|
+
* futility test can never disagree with the tiers about who is pickable.
|
|
284
|
+
*/
|
|
285
|
+
private isSelectable;
|
|
207
286
|
private persistState;
|
|
208
287
|
/**
|
|
209
288
|
* Determine if self-coordination should be allowed based on network observations.
|
|
@@ -235,6 +314,13 @@ export declare class Libp2pKeyPeerNetwork implements IKeyNetwork, IPeerNetwork {
|
|
|
235
314
|
* self) and by `RepoClient`/`ClusterClient` on redirect responses.
|
|
236
315
|
*/
|
|
237
316
|
recordCoordinator(key: Uint8Array, peerId: PeerId, ttlMs?: number): void;
|
|
317
|
+
/**
|
|
318
|
+
* Learn how to reach `peerId` from addresses carried by an application-level message
|
|
319
|
+
* (a cluster record's peer map, a redirect payload). See {@link mergePeerAddresses} for
|
|
320
|
+
* the rules and the trust boundary; this is the {@link IPeerNetwork} entry point every
|
|
321
|
+
* protocol client dials through.
|
|
322
|
+
*/
|
|
323
|
+
recordPeerAddresses(peerId: PeerId, multiaddrs: string[]): void;
|
|
238
324
|
private getCachedCoordinator;
|
|
239
325
|
/**
|
|
240
326
|
* True for a circuit-relay ("limited") connection. libp2p stamps a relayed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p-key-network.d.ts","sourceRoot":"","sources":["../../src/libp2p-key-network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE1F,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"libp2p-key-network.d.ts","sourceRoot":"","sources":["../../src/libp2p-key-network.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { toString as u8ToString } from 'uint8arrays';
|
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
3
|
-
import { multiaddr } from '@multiformats/multiaddr';
|
|
4
3
|
import { hashKey } from 'p2p-fret';
|
|
5
4
|
import { createLogger, verbose } from './logger.js';
|
|
5
|
+
import { mergePeerAddresses, validMultiaddrStrings } from './peer-address-book.js';
|
|
6
6
|
/**
|
|
7
7
|
* Error codes surfaced by {@link Libp2pKeyPeerNetwork.findCoordinator}. Callers
|
|
8
8
|
* (notably the batch-retry logic in `NetworkTransactor`) can inspect `.code`
|
|
@@ -43,6 +43,8 @@ export class FindCoordinatorError extends Error {
|
|
|
43
43
|
this.code = code;
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
+
/** Snapshot format this build writes and is willing to read. Bump on any incompatible change. */
|
|
47
|
+
export const PERSISTED_STATE_VERSION = 2;
|
|
46
48
|
export class Libp2pKeyPeerNetwork {
|
|
47
49
|
libp2p;
|
|
48
50
|
clusterSize;
|
|
@@ -52,6 +54,17 @@ export class Libp2pKeyPeerNetwork {
|
|
|
52
54
|
networkHighWaterMark = 1;
|
|
53
55
|
lastConnectedTime = Date.now();
|
|
54
56
|
consecutiveIsolatedSessions = 0;
|
|
57
|
+
/**
|
|
58
|
+
* NOTE: diagnostic-only — no decision consults this any more. It used to gate the
|
|
59
|
+
* coordinator retry window, but it is computed once at construction
|
|
60
|
+
* (`bootstrapNodes.length > 0` in `libp2p-node-base.ts`) and never re-derived, so a node
|
|
61
|
+
* configured with a bootstrap address it has never reached read as "company is coming"
|
|
62
|
+
* forever; {@link retryCouldImprove} asks libp2p for live evidence instead. It still earns
|
|
63
|
+
* its keep in the `retry-futile` log line ("configured
|
|
64
|
+
* to expect company" vs. "solo by design"). Drop it, or re-derive it from live state, when
|
|
65
|
+
* the constructor becomes an options bag — removing the positional parameter now would
|
|
66
|
+
* churn ~50 construction sites in `test/libp2p-key-network.spec.ts` for no behaviour change.
|
|
67
|
+
*/
|
|
55
68
|
networkMode;
|
|
56
69
|
persistence;
|
|
57
70
|
// NOTE: seven positional parameters, and the list stays that way for now — converting to an
|
|
@@ -88,12 +101,16 @@ export class Libp2pKeyPeerNetwork {
|
|
|
88
101
|
this.clusterSize = clusterSize;
|
|
89
102
|
this.reputation = reputation;
|
|
90
103
|
this.protocolPrefix = protocolPrefix;
|
|
104
|
+
// Built here rather than as a field initializer: field initializers run before the
|
|
105
|
+
// constructor body, where `this.libp2p` (a parameter property) is not yet assigned.
|
|
106
|
+
this.log = createLogger('libp2p-key-network', this.libp2p.peerId.toString());
|
|
91
107
|
// NOTE: no production construction site in this repo passes a SelfCoordinationConfig —
|
|
92
108
|
// both leave it `undefined` (libp2p-node-base.ts, and the foreign-node fallback in
|
|
93
109
|
// quereus-plugin-optimystic's collection-factory.ts), so these defaults are always what
|
|
94
110
|
// is in force and no operator can tune them. If tuning `gracePeriodMs` is ever needed,
|
|
95
111
|
// those two sites have to thread the config through first. Low urgency: a grace-period denial no longer fails the caller, it only costs
|
|
96
|
-
// a write the
|
|
112
|
+
// a write the findCoordinator retry window before self-coordinating — and only when that
|
|
113
|
+
// window is worth paying at all (see `retryCouldImprove`), so an isolated node pays nothing.
|
|
97
114
|
this.selfCoordinationConfig = {
|
|
98
115
|
gracePeriodMs: selfCoordinationConfig?.gracePeriodMs ?? 30_000,
|
|
99
116
|
shrinkageThreshold: selfCoordinationConfig?.shrinkageThreshold ?? 0.5,
|
|
@@ -118,7 +135,7 @@ export class Libp2pKeyPeerNetwork {
|
|
|
118
135
|
// coordinator cache: key (base64url) -> peerId until expiry (bounded LRU-ish via Map insertion order)
|
|
119
136
|
coordinatorCache = new Map();
|
|
120
137
|
static MAX_CACHE_ENTRIES = 1000;
|
|
121
|
-
log
|
|
138
|
+
log;
|
|
122
139
|
toCacheKey(key) { return u8ToString(key, 'base64url'); }
|
|
123
140
|
/**
|
|
124
141
|
* Set up connection event tracking to update high water mark and last connected time.
|
|
@@ -163,12 +180,23 @@ export class Libp2pKeyPeerNetwork {
|
|
|
163
180
|
const state = await this.persistence.load();
|
|
164
181
|
if (!state)
|
|
165
182
|
return;
|
|
183
|
+
// Discard, don't translate. A foreign-version snapshot is cheap to replace — the high-water
|
|
184
|
+
// mark and the peer table are both re-learned within a few stabilization ticks — and far
|
|
185
|
+
// cheaper than reasoning about what an older FRET meant by any given field.
|
|
186
|
+
if (state.version !== PERSISTED_STATE_VERSION) {
|
|
187
|
+
this.log('init:state-discarded version=%o want=%d', state.version, PERSISTED_STATE_VERSION);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
166
190
|
this.networkHighWaterMark = state.networkHighWaterMark;
|
|
167
191
|
this.lastConnectedTime = state.lastConnectedTimestamp;
|
|
168
192
|
this.consecutiveIsolatedSessions = state.consecutiveIsolatedSessions;
|
|
169
193
|
if (state.fretTable) {
|
|
170
194
|
try {
|
|
171
|
-
|
|
195
|
+
// Must be awaited: importTable is async as of FRET 1.0.0-beta.1 and enforces capacity
|
|
196
|
+
// against the self ring coordinate it hashes on demand. Left floating, the restore
|
|
197
|
+
// races that enforcement against whatever runs next, and a rejection escapes this
|
|
198
|
+
// catch entirely rather than being logged as a skipped import.
|
|
199
|
+
await this.getFret().importTable(state.fretTable);
|
|
172
200
|
}
|
|
173
201
|
catch (err) {
|
|
174
202
|
this.log('init:fret-import-skipped %o', err);
|
|
@@ -183,20 +211,76 @@ export class Libp2pKeyPeerNetwork {
|
|
|
183
211
|
}
|
|
184
212
|
}
|
|
185
213
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
214
|
+
/**
|
|
215
|
+
* Can another attempt plausibly return a BETTER answer than this one did? Consulted ONLY
|
|
216
|
+
* when the current attempt found no candidate and the node holds zero connections — i.e.
|
|
217
|
+
* purely to decide whether the 500ms inter-attempt sleep is worth paying.
|
|
218
|
+
*
|
|
219
|
+
* Answered from evidence available NOW, never from configuration or history (`networkMode`
|
|
220
|
+
* is frozen at construction and `networkHighWaterMark` is monotonic, so both used to keep
|
|
221
|
+
* the window open forever on a node that could never fill it):
|
|
222
|
+
* - a non-self candidate in the FRET neighbourhood for this key — a peer we know of and
|
|
223
|
+
* route to; a connection to it landing during the sleep makes it selectable.
|
|
224
|
+
* - a dial in flight (`queued` / `active` in libp2p's dial queue) — a connection attempt
|
|
225
|
+
* that can complete inside the sleep. This is the signal that covers a
|
|
226
|
+
* configured-but-not-yet-reached bootstrap peer: while its dial runs, the window is
|
|
227
|
+
* worth paying; once the dial has failed, it is not.
|
|
228
|
+
*
|
|
229
|
+
* Neither present → nothing this call can wait for; break to the last-resort tier.
|
|
230
|
+
*
|
|
231
|
+
* NOTE: accepted regression — a node with no known peers and no dial in flight that
|
|
232
|
+
* received an INBOUND connection during a sleep it now skips will route that one lookup to
|
|
233
|
+
* self instead of to the arriving peer. A self pick is never cached, so the next lookup
|
|
234
|
+
* picks the peer up; the benefit is that every genuinely isolated lookup stops paying ~1s
|
|
235
|
+
* per block. Inbound reachability is deliberately NOT a futility signal: it holds for
|
|
236
|
+
* nearly every node with a listen address, so it would neuter the test.
|
|
237
|
+
* NOTE: deliberately no `peerStore` scan — "we have a record of a peer" is not "a peer can
|
|
238
|
+
* arrive in the next 500ms". A peerStore entry with no FRET entry and no in-flight dial is
|
|
239
|
+
* a peer nobody is currently attempting, and the scan is an async datastore iteration on a
|
|
240
|
+
* per-lookup hot path.
|
|
241
|
+
*/
|
|
242
|
+
retryCouldImprove(candidateIds) {
|
|
243
|
+
if (candidateIds.some(id => id !== this.libp2p.peerId.toString()))
|
|
190
244
|
return true;
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
245
|
+
return this.dialsInFlight() > 0;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Number of dials libp2p is currently attempting (`queued` or `active`) — a connection
|
|
249
|
+
* that can plausibly complete inside the inter-attempt sleep.
|
|
250
|
+
*
|
|
251
|
+
* Over-inclusive by design: the queue may hold a dial to an excluded, banned, or
|
|
252
|
+
* foreign-network peer. That keeps the retry window (conservative, matches the behaviour
|
|
253
|
+
* before the futility test existed); cross-referencing it would cost more than the sleep
|
|
254
|
+
* it saves. `getDialQueue` is non-optional on the Libp2p interface, so an absent method
|
|
255
|
+
* only ever means a test mock — treated as "no evidence of an in-flight dial", exactly as
|
|
256
|
+
* `getConnections?.()` is handled elsewhere.
|
|
257
|
+
*
|
|
258
|
+
* NOTE: this bounds — it does not eliminate — the futile window for the motivating case (a
|
|
259
|
+
* node whose only configured bootstrap is unreachable). FRET re-probes such a peer at most
|
|
260
|
+
* once per its capped 32s backoff (`fret-service.ts` `recordBackoff`: base 1000ms × factor
|
|
261
|
+
* ≤32), and each probe's dial can sit `active` for libp2p's 10s `DIAL_TIMEOUT` — so up to
|
|
262
|
+
* roughly a third of wall-clock still has a dial in flight, and lookups in those stretches
|
|
263
|
+
* still pay ~1s. Paying there is correct (a succeeding probe makes the peer selectable);
|
|
264
|
+
* revisit only if either upstream constant moves far enough to make the duty cycle ~1.
|
|
265
|
+
*/
|
|
266
|
+
dialsInFlight() {
|
|
267
|
+
return (this.libp2p.getDialQueue?.() ?? [])
|
|
268
|
+
.filter(d => d.status === 'queued' || d.status === 'active').length;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* The caller-independent half of eligibility: this peer is neither excluded by the caller
|
|
272
|
+
* nor banned by reputation. Shared by all three places `findCoordinator` narrows a candidate
|
|
273
|
+
* list — the FRET tier, the connected-peer fallback, and the retry-futility input — so the
|
|
274
|
+
* futility test can never disagree with the tiers about who is pickable.
|
|
275
|
+
*/
|
|
276
|
+
isSelectable(id, excluded) {
|
|
277
|
+
return !excluded.has(id) && !(this.reputation?.isBanned(id));
|
|
194
278
|
}
|
|
195
279
|
persistState() {
|
|
196
280
|
if (!this.persistence)
|
|
197
281
|
return;
|
|
198
282
|
const state = {
|
|
199
|
-
version:
|
|
283
|
+
version: PERSISTED_STATE_VERSION,
|
|
200
284
|
networkHighWaterMark: this.networkHighWaterMark,
|
|
201
285
|
lastConnectedTimestamp: this.lastConnectedTime,
|
|
202
286
|
consecutiveIsolatedSessions: this.consecutiveIsolatedSessions,
|
|
@@ -316,6 +400,15 @@ export class Libp2pKeyPeerNetwork {
|
|
|
316
400
|
this.coordinatorCache.delete(firstKey);
|
|
317
401
|
}
|
|
318
402
|
}
|
|
403
|
+
/**
|
|
404
|
+
* Learn how to reach `peerId` from addresses carried by an application-level message
|
|
405
|
+
* (a cluster record's peer map, a redirect payload). See {@link mergePeerAddresses} for
|
|
406
|
+
* the rules and the trust boundary; this is the {@link IPeerNetwork} entry point every
|
|
407
|
+
* protocol client dials through.
|
|
408
|
+
*/
|
|
409
|
+
recordPeerAddresses(peerId, multiaddrs) {
|
|
410
|
+
mergePeerAddresses(this.libp2p, peerId, multiaddrs, (fmt, ...args) => this.log(fmt, ...args));
|
|
411
|
+
}
|
|
319
412
|
getCachedCoordinator(key) {
|
|
320
413
|
const k = this.toCacheKey(key);
|
|
321
414
|
const hit = this.coordinatorCache.get(k);
|
|
@@ -474,7 +567,7 @@ export class Libp2pKeyPeerNetwork {
|
|
|
474
567
|
return selfAllowedThisAttempt;
|
|
475
568
|
};
|
|
476
569
|
const connectedFretIds = ids
|
|
477
|
-
.filter(id =>
|
|
570
|
+
.filter(id => this.isSelectable(id, excludedSet))
|
|
478
571
|
.filter(id => connectedSet.has(id) || (id === selfStr && isSelfAdmissible()))
|
|
479
572
|
.sort((a, b) => (this.reputation?.getScore(a) ?? 0) - (this.reputation?.getScore(b) ?? 0));
|
|
480
573
|
this.log('findCoordinator:fret-connected key=%s count=%d peers=%o', keyStr, connectedFretIds.length, connectedFretIds.map(s => s.substring(0, 12)));
|
|
@@ -510,7 +603,7 @@ export class Libp2pKeyPeerNetwork {
|
|
|
510
603
|
// Being remote-only, this tier needs no self-coordination guard check, unlike the
|
|
511
604
|
// FRET tier above.
|
|
512
605
|
const connectedCandidates = connected
|
|
513
|
-
.filter(p =>
|
|
606
|
+
.filter(p => this.isSelectable(p.toString(), excludedSet))
|
|
514
607
|
.sort((a, b) => (this.reputation?.getScore(a.toString()) ?? 0) - (this.reputation?.getScore(b.toString()) ?? 0))
|
|
515
608
|
.map(p => p.toString());
|
|
516
609
|
const { ranked: connRanked, droppedUnconfirmed: connDroppedUnconfirmed } = await this.filterByMembership(connectedCandidates);
|
|
@@ -525,8 +618,17 @@ export class Libp2pKeyPeerNetwork {
|
|
|
525
618
|
}
|
|
526
619
|
// If no connections and not the last attempt, wait and retry
|
|
527
620
|
if (connected.length === 0 && attempt < maxRetries - 1) {
|
|
528
|
-
|
|
529
|
-
|
|
621
|
+
// Exclusion/ban filtered — a neighbour we may never pick is not something to
|
|
622
|
+
// wait for. This network's membership filter (peerStore protocols) is deliberately
|
|
623
|
+
// NOT applied: a neighbour still `unknown` to it is exactly the peer that flips to
|
|
624
|
+
// `serves` inside the retry window, so its presence must keep the window. FRET's
|
|
625
|
+
// own ring membership has already applied a stricter cut upstream — `getNeighbors`
|
|
626
|
+
// returns confirmed ring members only — so a configured-but-never-reached bootstrap
|
|
627
|
+
// peer is absent from `ids` entirely, and only the dial-in-flight signal below can
|
|
628
|
+
// keep the window for it.
|
|
629
|
+
const knowable = ids.filter(id => this.isSelectable(id, excludedSet));
|
|
630
|
+
if (!this.retryCouldImprove(knowable)) {
|
|
631
|
+
this.log('findCoordinator:retry-futile key=%s neighbors=%d dialsInFlight=%d mode=%s hwm=%d', keyStr, knowable.length, this.dialsInFlight(), this.networkMode, this.networkHighWaterMark);
|
|
530
632
|
break;
|
|
531
633
|
}
|
|
532
634
|
this.log('findCoordinator:no-connections-retry key=%s attempt=%d delay=%dms', keyStr, attempt, retryDelayMs);
|
|
@@ -594,17 +696,7 @@ export class Libp2pKeyPeerNetwork {
|
|
|
594
696
|
return byPeer;
|
|
595
697
|
}
|
|
596
698
|
parseMultiaddrs(addrs) {
|
|
597
|
-
|
|
598
|
-
for (const a of addrs) {
|
|
599
|
-
try {
|
|
600
|
-
multiaddr(a);
|
|
601
|
-
out.push(a);
|
|
602
|
-
}
|
|
603
|
-
catch (err) {
|
|
604
|
-
this.log('WARN: invalid multiaddr from connection %s %o', a, err);
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
return out;
|
|
699
|
+
return validMultiaddrStrings(addrs, (fmt, ...args) => this.log(fmt, ...args));
|
|
608
700
|
}
|
|
609
701
|
async findCluster(key) {
|
|
610
702
|
const t0 = Date.now();
|
|
@@ -692,6 +784,11 @@ export class Libp2pKeyPeerNetwork {
|
|
|
692
784
|
if (verbose)
|
|
693
785
|
this.log('findCluster:detail key=%s cohortPeers=%o connectedPeers=%o', keyStr, ids, connectedPeerIds);
|
|
694
786
|
const peers = {};
|
|
787
|
+
// Cohort members we have no dialable address for. Admitting them is deliberate (see
|
|
788
|
+
// the note at the assignment below), but staying SILENT about it is what produced the
|
|
789
|
+
// reported symptom: clean membership logs on every node while every dial to the
|
|
790
|
+
// addressless member died instantly and the write never completed.
|
|
791
|
+
const addressless = [];
|
|
695
792
|
for (const idStr of ids) {
|
|
696
793
|
if (idStr === selfId) {
|
|
697
794
|
const raw = this.libp2p.peerId.publicKey?.raw ?? new Uint8Array();
|
|
@@ -714,9 +811,18 @@ export class Libp2pKeyPeerNetwork {
|
|
|
714
811
|
// retry/exclude logic takes over — we intentionally do NOT drop
|
|
715
812
|
// addressless members here, because shrinking the cohort below
|
|
716
813
|
// `clusterSize` puts consensus supermajority out of reach.
|
|
814
|
+
if (parsed.length === 0)
|
|
815
|
+
addressless.push(idStr.substring(0, 12));
|
|
717
816
|
peers[idStr] = { multiaddrs: parsed, publicKey: u8ToString(raw, 'base64url') };
|
|
718
817
|
}
|
|
719
|
-
|
|
818
|
+
// Unconditional (not gated on `verbose`): this is the one line that turns a silent
|
|
819
|
+
// hang into a diagnosable one. A non-zero count means the cohort LOOKS healthy while
|
|
820
|
+
// some members cannot be dialed at all until someone teaches us their addresses
|
|
821
|
+
// (see `recordPeerAddresses` / `peer-address-book.ts`).
|
|
822
|
+
if (addressless.length > 0) {
|
|
823
|
+
this.log('findCluster:addressless-members key=%s count=%d of=%d peers=%o', keyStr, addressless.length, Object.keys(peers).length, addressless);
|
|
824
|
+
}
|
|
825
|
+
this.log('findCluster:done key=%s ms=%d peers=%d addressless=%d', keyStr, Date.now() - t0, Object.keys(peers).length, addressless.length);
|
|
720
826
|
return peers;
|
|
721
827
|
}
|
|
722
828
|
/**
|