@aztec/p2p 0.0.1-commit.c80b6263 → 0.0.1-commit.cd76b27
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/dest/client/factory.d.ts +7 -6
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +47 -10
- package/dest/client/interface.d.ts +43 -23
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +40 -42
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +156 -145
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +7 -7
- package/dest/config.d.ts +29 -4
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +19 -2
- package/dest/errors/tx-pool.error.d.ts +8 -0
- package/dest/errors/tx-pool.error.d.ts.map +1 -0
- package/dest/errors/tx-pool.error.js +9 -0
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +104 -88
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +441 -3
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +353 -87
- package/dest/mem_pools/attestation_pool/index.d.ts +2 -3
- package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/index.js +1 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +2 -2
- package/dest/mem_pools/index.d.ts +3 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/index.js +1 -1
- package/dest/mem_pools/interface.d.ts +5 -5
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts +2 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/index.js +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts +43 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/archive/tx_archive.js +103 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +104 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +251 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +47 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +128 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +93 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +19 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +95 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +10 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +11 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +174 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +25 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +65 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts +17 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +93 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +16 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +74 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +20 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +73 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +19 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts +6 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/index.js +5 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +209 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.js +8 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +97 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +152 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts +26 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_bench_metrics.js +70 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +108 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +355 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +60 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +161 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +77 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +878 -0
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.d.ts +3 -3
- package/dest/msg_validators/tx_validator/archive_cache.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/archive_cache.js +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +18 -5
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +2 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +10 -6
- package/dest/services/dummy_service.d.ts +12 -3
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +9 -0
- package/dest/services/encoding.d.ts +2 -2
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +4 -3
- package/dest/services/gossipsub/index.d.ts +3 -0
- package/dest/services/gossipsub/index.d.ts.map +1 -0
- package/dest/services/gossipsub/index.js +2 -0
- package/dest/services/gossipsub/scoring.d.ts +21 -3
- package/dest/services/gossipsub/scoring.d.ts.map +1 -1
- package/dest/services/gossipsub/scoring.js +24 -7
- package/dest/services/gossipsub/topic_score_params.d.ts +173 -0
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -0
- package/dest/services/gossipsub/topic_score_params.js +346 -0
- package/dest/services/index.d.ts +2 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +1 -0
- package/dest/services/libp2p/libp2p_service.d.ts +85 -35
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +379 -280
- package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
- package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_scoring.js +25 -2
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +6 -5
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +13 -17
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -13
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +25 -46
- package/dest/services/reqresp/interface.d.ts +10 -1
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +15 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +7 -5
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +17 -12
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +25 -14
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +40 -24
- package/dest/services/reqresp/protocols/tx.d.ts +7 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +20 -0
- package/dest/services/reqresp/reqresp.d.ts +1 -1
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +11 -4
- package/dest/services/service.d.ts +38 -2
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +22 -4
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +49 -3
- package/dest/services/tx_collection/fast_tx_collection.d.ts +6 -5
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +64 -48
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +53 -0
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_collection.js +167 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts +37 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_source.js +90 -0
- package/dest/services/tx_collection/index.d.ts +3 -2
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +1 -0
- package/dest/services/tx_collection/instrumentation.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
- package/dest/services/tx_collection/instrumentation.js +2 -1
- package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
- package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +15 -14
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +6 -6
- package/dest/services/tx_collection/slow_tx_collection.d.ts +7 -3
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +60 -26
- package/dest/services/tx_collection/tx_collection.d.ts +23 -10
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +75 -3
- package/dest/services/tx_collection/tx_collection_sink.d.ts +18 -8
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +26 -29
- package/dest/services/tx_collection/tx_source.d.ts +8 -3
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +19 -2
- package/dest/services/tx_file_store/config.d.ts +16 -0
- package/dest/services/tx_file_store/config.d.ts.map +1 -0
- package/dest/services/tx_file_store/config.js +22 -0
- package/dest/services/tx_file_store/index.d.ts +4 -0
- package/dest/services/tx_file_store/index.d.ts.map +1 -0
- package/dest/services/tx_file_store/index.js +3 -0
- package/dest/services/tx_file_store/instrumentation.d.ts +15 -0
- package/dest/services/tx_file_store/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_file_store/instrumentation.js +29 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts +48 -0
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -0
- package/dest/services/tx_file_store/tx_file_store.js +152 -0
- package/dest/services/tx_provider.d.ts +3 -3
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +5 -4
- package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.d.ts +29 -2
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +103 -2
- package/dest/test-helpers/reqresp-nodes.d.ts +1 -1
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +2 -1
- package/dest/test-helpers/testbench-utils.d.ts +45 -38
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +130 -60
- package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +11 -11
- package/dest/util.d.ts +2 -2
- package/dest/util.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/client/factory.ts +89 -14
- package/src/client/interface.ts +59 -23
- package/src/client/p2p_client.ts +196 -167
- package/src/client/test/tx_proposal_collector/README.md +4 -4
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +20 -10
- package/src/config.ts +41 -2
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/index.ts +1 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +496 -91
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +442 -102
- package/src/mem_pools/attestation_pool/index.ts +9 -2
- package/src/mem_pools/attestation_pool/mocks.ts +2 -1
- package/src/mem_pools/index.ts +4 -1
- package/src/mem_pools/interface.ts +4 -4
- package/src/mem_pools/tx_pool/README.md +1 -1
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
- package/src/mem_pools/tx_pool_v2/README.md +275 -0
- package/src/mem_pools/tx_pool_v2/archive/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/archive/tx_archive.ts +120 -0
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +321 -0
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +160 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +121 -0
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +122 -0
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +27 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +209 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +74 -0
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +101 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +87 -0
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +90 -0
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +31 -0
- package/src/mem_pools/tx_pool_v2/index.ts +12 -0
- package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +239 -0
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +242 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_bench_metrics.ts +77 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +444 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +223 -0
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +1052 -0
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +2 -2
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
- package/src/msg_validators/tx_validator/archive_cache.ts +3 -3
- package/src/msg_validators/tx_validator/block_header_validator.ts +18 -8
- package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
- package/src/msg_validators/tx_validator/timestamp_validator.ts +23 -18
- package/src/services/data_store.ts +10 -7
- package/src/services/dummy_service.ts +17 -1
- package/src/services/encoding.ts +4 -3
- package/src/services/gossipsub/README.md +641 -0
- package/src/services/gossipsub/index.ts +2 -0
- package/src/services/gossipsub/scoring.ts +29 -5
- package/src/services/gossipsub/topic_score_params.ts +487 -0
- package/src/services/index.ts +1 -0
- package/src/services/libp2p/libp2p_service.ts +382 -282
- package/src/services/peer-manager/peer_scoring.ts +25 -0
- package/src/services/reqresp/batch-tx-requester/README.md +14 -14
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +18 -18
- package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
- package/src/services/reqresp/interface.ts +26 -1
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +24 -15
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +47 -24
- package/src/services/reqresp/protocols/tx.ts +22 -0
- package/src/services/reqresp/reqresp.ts +13 -3
- package/src/services/service.ts +50 -1
- package/src/services/tx_collection/config.ts +74 -6
- package/src/services/tx_collection/fast_tx_collection.ts +74 -51
- package/src/services/tx_collection/file_store_tx_collection.ts +202 -0
- package/src/services/tx_collection/file_store_tx_source.ts +117 -0
- package/src/services/tx_collection/index.ts +2 -1
- package/src/services/tx_collection/instrumentation.ts +7 -1
- package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
- package/src/services/tx_collection/proposal_tx_collector.ts +20 -21
- package/src/services/tx_collection/slow_tx_collection.ts +66 -33
- package/src/services/tx_collection/tx_collection.ts +113 -16
- package/src/services/tx_collection/tx_collection_sink.ts +30 -34
- package/src/services/tx_collection/tx_source.ts +22 -3
- package/src/services/tx_file_store/config.ts +37 -0
- package/src/services/tx_file_store/index.ts +3 -0
- package/src/services/tx_file_store/instrumentation.ts +36 -0
- package/src/services/tx_file_store/tx_file_store.ts +175 -0
- package/src/services/tx_provider.ts +8 -7
- package/src/test-helpers/make-test-p2p-clients.ts +3 -3
- package/src/test-helpers/mock-pubsub.ts +143 -3
- package/src/test-helpers/reqresp-nodes.ts +2 -1
- package/src/test-helpers/testbench-utils.ts +129 -71
- package/src/testbench/p2p_client_testbench_worker.ts +23 -16
- package/src/util.ts +7 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -40
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +0 -218
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -31
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +0 -180
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +0 -320
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +0 -264
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
3
|
-
import
|
|
4
|
-
import { TxArray, TxHash, TxHashArray } from '@aztec/stdlib/tx';
|
|
3
|
+
import { MAX_TX_SIZE_KB } from '@aztec/stdlib/p2p';
|
|
4
|
+
import { TxArray, type TxHash, TxHashArray } from '@aztec/stdlib/tx';
|
|
5
5
|
|
|
6
6
|
import { BitVector } from './bitvector.js';
|
|
7
7
|
|
|
8
|
+
/** Minimal interface for a block source that provides tx hashes and an archive root. */
|
|
9
|
+
export interface BlockTxsSource {
|
|
10
|
+
txHashes: TxHash[];
|
|
11
|
+
archive: Fr;
|
|
12
|
+
}
|
|
13
|
+
|
|
8
14
|
/**
|
|
9
15
|
* Request message for requesting specific transactions from a block
|
|
10
16
|
*/
|
|
11
17
|
export class BlockTxsRequest {
|
|
12
18
|
constructor(
|
|
13
|
-
//
|
|
14
|
-
readonly
|
|
19
|
+
// Archive root after the proposed block is applied (proposal identifier)
|
|
20
|
+
readonly archiveRoot: Fr,
|
|
15
21
|
// Hashes of txs we are requesting
|
|
16
22
|
readonly txHashes: TxHashArray,
|
|
17
23
|
// BitVector indicating which txs from the proposal we are requesting
|
|
@@ -22,16 +28,17 @@ export class BlockTxsRequest {
|
|
|
22
28
|
) {}
|
|
23
29
|
|
|
24
30
|
/**
|
|
25
|
-
*
|
|
31
|
+
* Creates new BlockTxsRequest given a block txs source and missing tx hashes.
|
|
26
32
|
*
|
|
27
|
-
* @param
|
|
28
|
-
* @param
|
|
29
|
-
* @param
|
|
33
|
+
* @param blockTxsSource - The block or proposal for which we are making the request
|
|
34
|
+
* @param missingTxHashes - Tx hashes from the source we are missing
|
|
35
|
+
* @param includeFullTxHashes - Whether to include full list of missing tx hashes in the request or just Bitvector indices
|
|
30
36
|
*
|
|
31
|
-
* @returns undefined if there were no missingTxHashes matching
|
|
32
|
-
* returns new BlockTxsRequest
|
|
33
|
-
|
|
34
|
-
|
|
37
|
+
* @returns undefined if there were no missingTxHashes matching the source hashes, otherwise
|
|
38
|
+
* returns new BlockTxsRequest
|
|
39
|
+
*/
|
|
40
|
+
static fromTxsSourceAndMissingTxs(
|
|
41
|
+
blockTxsSource: BlockTxsSource,
|
|
35
42
|
missingTxHashes: TxHash[],
|
|
36
43
|
includeFullTxHashes = false,
|
|
37
44
|
): BlockTxsRequest | undefined {
|
|
@@ -41,19 +48,19 @@ export class BlockTxsRequest {
|
|
|
41
48
|
|
|
42
49
|
const missingHashesSet = new Set(missingTxHashes.map(t => t.toString()));
|
|
43
50
|
|
|
44
|
-
// We cannot request txs that are not part of the block
|
|
45
|
-
if (!missingHashesSet.isSubsetOf(new Set(
|
|
51
|
+
// We cannot request txs that are not part of the block
|
|
52
|
+
if (!missingHashesSet.isSubsetOf(new Set(blockTxsSource.txHashes.map(t => t.toString())))) {
|
|
46
53
|
return undefined;
|
|
47
54
|
}
|
|
48
55
|
|
|
49
|
-
const missingIndices =
|
|
56
|
+
const missingIndices = blockTxsSource.txHashes
|
|
50
57
|
.map((hash, idx) => (missingHashesSet.has(hash.toString()) ? idx : -1))
|
|
51
58
|
.filter(i => i != -1);
|
|
52
59
|
|
|
53
|
-
const requestBitVector = BitVector.init(
|
|
60
|
+
const requestBitVector = BitVector.init(blockTxsSource.txHashes.length, missingIndices);
|
|
54
61
|
const hashes = includeFullTxHashes ? new TxHashArray(...missingTxHashes) : new TxHashArray();
|
|
55
62
|
|
|
56
|
-
return new BlockTxsRequest(
|
|
63
|
+
return new BlockTxsRequest(blockTxsSource.archive, hashes, requestBitVector);
|
|
57
64
|
}
|
|
58
65
|
|
|
59
66
|
/**
|
|
@@ -63,11 +70,11 @@ export class BlockTxsRequest {
|
|
|
63
70
|
*/
|
|
64
71
|
static fromBuffer(buffer: Buffer | BufferReader): BlockTxsRequest {
|
|
65
72
|
const reader = BufferReader.asReader(buffer);
|
|
66
|
-
const
|
|
73
|
+
const archiveRoot = Fr.fromBuffer(reader);
|
|
67
74
|
const txHashes = TxHashArray.fromBuffer(reader);
|
|
68
75
|
const txIndices = BitVector.fromBuffer(reader);
|
|
69
76
|
|
|
70
|
-
return new BlockTxsRequest(
|
|
77
|
+
return new BlockTxsRequest(archiveRoot, txHashes, txIndices);
|
|
71
78
|
}
|
|
72
79
|
|
|
73
80
|
/**
|
|
@@ -75,7 +82,7 @@ export class BlockTxsRequest {
|
|
|
75
82
|
* @returns Buffer representation of the BlockTxRequest object
|
|
76
83
|
*/
|
|
77
84
|
toBuffer(): Buffer {
|
|
78
|
-
return serializeToBuffer([this.
|
|
85
|
+
return serializeToBuffer([this.archiveRoot, this.txHashes.toBuffer(), this.txIndices.toBuffer()]);
|
|
79
86
|
}
|
|
80
87
|
}
|
|
81
88
|
|
|
@@ -84,7 +91,7 @@ export class BlockTxsRequest {
|
|
|
84
91
|
*/
|
|
85
92
|
export class BlockTxsResponse {
|
|
86
93
|
constructor(
|
|
87
|
-
readonly
|
|
94
|
+
readonly archiveRoot: Fr,
|
|
88
95
|
readonly txs: TxArray, // List of transactions we requested and peer has
|
|
89
96
|
// BitVector indicating which txs from the proposal are available at the peer
|
|
90
97
|
// 1 means the tx is available, 0 means it is not
|
|
@@ -98,11 +105,11 @@ export class BlockTxsResponse {
|
|
|
98
105
|
*/
|
|
99
106
|
static fromBuffer(buffer: Buffer | BufferReader): BlockTxsResponse {
|
|
100
107
|
const reader = BufferReader.asReader(buffer);
|
|
101
|
-
const
|
|
108
|
+
const archiveRoot = Fr.fromBuffer(reader);
|
|
102
109
|
const txs = TxArray.fromBuffer(reader);
|
|
103
110
|
const txIndices = BitVector.fromBuffer(reader);
|
|
104
111
|
|
|
105
|
-
return new BlockTxsResponse(
|
|
112
|
+
return new BlockTxsResponse(archiveRoot, txs, txIndices);
|
|
106
113
|
}
|
|
107
114
|
|
|
108
115
|
/**
|
|
@@ -112,10 +119,26 @@ export class BlockTxsResponse {
|
|
|
112
119
|
* @returns Buffer representation of the BlockTxResponse object
|
|
113
120
|
*/
|
|
114
121
|
toBuffer(): Buffer {
|
|
115
|
-
return serializeToBuffer([this.
|
|
122
|
+
return serializeToBuffer([this.archiveRoot, this.txs.toBuffer(), this.txIndices.toBuffer()]);
|
|
116
123
|
}
|
|
117
124
|
|
|
118
125
|
static empty(): BlockTxsResponse {
|
|
119
126
|
return new BlockTxsResponse(Fr.ZERO, new TxArray(), BitVector.init(0, []));
|
|
120
127
|
}
|
|
121
128
|
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Calculate the expected response size for a BLOCK_TXS request.
|
|
132
|
+
* @param requestBuffer - The serialized request buffer containing BlockTxsRequest
|
|
133
|
+
* @returns Expected response size in KB
|
|
134
|
+
*/
|
|
135
|
+
export function calculateBlockTxsResponseSize(requestBuffer: Buffer): number {
|
|
136
|
+
try {
|
|
137
|
+
const request = BlockTxsRequest.fromBuffer(requestBuffer);
|
|
138
|
+
const requestedTxCount = request.txIndices.getTrueIndices().length;
|
|
139
|
+
return requestedTxCount * MAX_TX_SIZE_KB + 1; // +1 KB overhead for serialization
|
|
140
|
+
} catch {
|
|
141
|
+
// If we can't parse the request, fall back to allowing a single transaction response
|
|
142
|
+
return MAX_TX_SIZE_KB + 1;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { chunk } from '@aztec/foundation/collection';
|
|
2
|
+
import { MAX_TX_SIZE_KB } from '@aztec/stdlib/p2p';
|
|
2
3
|
import { TxArray, TxHash, TxHashArray } from '@aztec/stdlib/tx';
|
|
3
4
|
|
|
4
5
|
import type { PeerId } from '@libp2p/interface';
|
|
@@ -55,3 +56,24 @@ export function reqRespTxHandler(mempools: MemPools): ReqRespSubProtocolHandler
|
|
|
55
56
|
export function chunkTxHashesRequest(hashes: TxHash[], chunkSize = 1): Array<TxHashArray> {
|
|
56
57
|
return chunk(hashes, chunkSize).map(chunk => new TxHashArray(...chunk));
|
|
57
58
|
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Calculate the expected response size for a TX request.
|
|
62
|
+
* @param requestBuffer - The serialized request buffer containing TxHashArray
|
|
63
|
+
* @returns Expected response size in KB
|
|
64
|
+
*/
|
|
65
|
+
export function calculateTxResponseSize(requestBuffer: Buffer): number {
|
|
66
|
+
try {
|
|
67
|
+
const txHashes = TxHashArray.fromBuffer(requestBuffer);
|
|
68
|
+
// TxHashArray.fromBuffer returns empty array on parse failure, so check for that
|
|
69
|
+
if (txHashes.length === 0 && requestBuffer.length > 0) {
|
|
70
|
+
// If we got an empty array but had a non-empty buffer, parsing likely failed
|
|
71
|
+
// Fall back to allowing a single transaction response
|
|
72
|
+
return MAX_TX_SIZE_KB + 1;
|
|
73
|
+
}
|
|
74
|
+
return Math.max(txHashes.length, 1) * MAX_TX_SIZE_KB + 1; // +1 KB overhead, at least 1 tx
|
|
75
|
+
} catch {
|
|
76
|
+
// If we can't parse the request, fall back to allowing a single transaction response
|
|
77
|
+
return MAX_TX_SIZE_KB + 1;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -36,6 +36,7 @@ import {
|
|
|
36
36
|
type ReqRespSubProtocolValidators,
|
|
37
37
|
type SubProtocolMap,
|
|
38
38
|
responseFromBuffer,
|
|
39
|
+
subProtocolSizeCalculators,
|
|
39
40
|
} from './interface.js';
|
|
40
41
|
import { ReqRespMetrics } from './metrics.js';
|
|
41
42
|
import {
|
|
@@ -437,6 +438,9 @@ export class ReqResp implements ReqRespInterface {
|
|
|
437
438
|
try {
|
|
438
439
|
this.metrics.recordRequestSent(subProtocol);
|
|
439
440
|
|
|
441
|
+
// Calculate expected response size based on the request payload
|
|
442
|
+
const expectedSizeKb = subProtocolSizeCalculators[subProtocol](payload);
|
|
443
|
+
|
|
440
444
|
this.logger.trace(`Sending request to peer ${peerId.toString()} on sub protocol ${subProtocol}`);
|
|
441
445
|
stream = await this.connectionSampler.dialProtocol(peerId, subProtocol, dialTimeout);
|
|
442
446
|
this.logger.trace(
|
|
@@ -444,11 +448,14 @@ export class ReqResp implements ReqRespInterface {
|
|
|
444
448
|
);
|
|
445
449
|
|
|
446
450
|
const timeoutErr = new IndividualReqRespTimeoutError();
|
|
451
|
+
// Create a wrapper to pass the expected size to readMessage
|
|
452
|
+
const readMessageWithSizeLimit = (source: AsyncIterable<Uint8ArrayList>) =>
|
|
453
|
+
this.readMessage(source, expectedSizeKb);
|
|
447
454
|
const [_, resp] = await executeTimeout(
|
|
448
455
|
signal =>
|
|
449
456
|
Promise.all([
|
|
450
457
|
pipeline([payload], stream!.sink, { signal }),
|
|
451
|
-
pipeline(stream!.source,
|
|
458
|
+
pipeline(stream!.source, readMessageWithSizeLimit, { signal }),
|
|
452
459
|
]),
|
|
453
460
|
this.individualRequestTimeoutMs,
|
|
454
461
|
() => timeoutErr,
|
|
@@ -510,8 +517,11 @@ export class ReqResp implements ReqRespInterface {
|
|
|
510
517
|
* The message is split into two components
|
|
511
518
|
* - The first chunk should contain a control byte, indicating the status of the response see `ReqRespStatus`
|
|
512
519
|
* - The second chunk should contain the response data
|
|
520
|
+
*
|
|
521
|
+
* @param source - The async iterable source of data chunks
|
|
522
|
+
* @param maxSizeKb - Optional maximum expected size in KB for the decompressed response
|
|
513
523
|
*/
|
|
514
|
-
private async readMessage(source: AsyncIterable<Uint8ArrayList
|
|
524
|
+
private async readMessage(source: AsyncIterable<Uint8ArrayList>, maxSizeKb?: number): Promise<ReqRespResponse> {
|
|
515
525
|
let status: ReqRespStatus | undefined;
|
|
516
526
|
const chunks: Uint8Array[] = [];
|
|
517
527
|
|
|
@@ -536,7 +546,7 @@ export class ReqResp implements ReqRespInterface {
|
|
|
536
546
|
}
|
|
537
547
|
|
|
538
548
|
const messageData = Buffer.concat(chunks);
|
|
539
|
-
const message: Buffer = this.snappyTransform.inboundTransformData(messageData);
|
|
549
|
+
const message: Buffer = this.snappyTransform.inboundTransformData(messageData, undefined, maxSizeKb);
|
|
540
550
|
|
|
541
551
|
return {
|
|
542
552
|
status: status ?? ReqRespStatus.UNKNOWN,
|
package/src/services/service.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
3
|
import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
3
|
-
import type {
|
|
4
|
+
import type {
|
|
5
|
+
BlockProposal,
|
|
6
|
+
CheckpointAttestation,
|
|
7
|
+
CheckpointProposalCore,
|
|
8
|
+
Gossipable,
|
|
9
|
+
TopicType,
|
|
10
|
+
} from '@aztec/stdlib/p2p';
|
|
4
11
|
import type { Tx } from '@aztec/stdlib/tx';
|
|
5
12
|
|
|
6
13
|
import type { PeerId } from '@libp2p/interface';
|
|
@@ -43,6 +50,32 @@ export type P2PCheckpointReceivedCallback = (
|
|
|
43
50
|
|
|
44
51
|
export type AuthReceivedCallback = (peerId: PeerId, authRequest: AuthRequest) => Promise<AuthResponse | undefined>;
|
|
45
52
|
|
|
53
|
+
/** Minimal info passed to the duplicate proposal callback. */
|
|
54
|
+
export type DuplicateProposalInfo = {
|
|
55
|
+
slot: SlotNumber;
|
|
56
|
+
proposer: EthAddress;
|
|
57
|
+
type: 'checkpoint' | 'block';
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Callback for when a duplicate proposal is detected (equivocation).
|
|
62
|
+
* Invoked on the first duplicate (when count goes from 1 to 2).
|
|
63
|
+
*/
|
|
64
|
+
export type P2PDuplicateProposalCallback = (info: DuplicateProposalInfo) => void;
|
|
65
|
+
|
|
66
|
+
/** Minimal info passed to the duplicate attestation callback. */
|
|
67
|
+
export type DuplicateAttestationInfo = {
|
|
68
|
+
slot: SlotNumber;
|
|
69
|
+
attester: EthAddress;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Callback for when a duplicate attestation is detected (equivocation).
|
|
74
|
+
* A validator signing attestations for different proposals at the same slot.
|
|
75
|
+
* Invoked on the first duplicate (when count goes from 1 to 2).
|
|
76
|
+
*/
|
|
77
|
+
export type P2PDuplicateAttestationCallback = (info: DuplicateAttestationInfo) => void;
|
|
78
|
+
|
|
46
79
|
/**
|
|
47
80
|
* The interface for a P2P service implementation.
|
|
48
81
|
*/
|
|
@@ -86,10 +119,26 @@ export interface P2PService {
|
|
|
86
119
|
|
|
87
120
|
registerCheckpointReceivedCallback(callback: P2PCheckpointReceivedCallback): void;
|
|
88
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Registers a callback invoked when a duplicate proposal is detected (equivocation).
|
|
124
|
+
* The callback is triggered on the first duplicate (when count goes from 1 to 2).
|
|
125
|
+
*/
|
|
126
|
+
registerDuplicateProposalCallback(callback: P2PDuplicateProposalCallback): void;
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Registers a callback invoked when a duplicate attestation is detected (equivocation).
|
|
130
|
+
* A validator signing attestations for different proposals at the same slot.
|
|
131
|
+
* The callback is triggered on the first duplicate (when count goes from 1 to 2).
|
|
132
|
+
*/
|
|
133
|
+
registerDuplicateAttestationCallback(callback: P2PDuplicateAttestationCallback): void;
|
|
134
|
+
|
|
89
135
|
getEnr(): ENR | undefined;
|
|
90
136
|
|
|
91
137
|
getPeers(includePending?: boolean): PeerInfo[];
|
|
92
138
|
|
|
139
|
+
/** Returns the number of peers in the GossipSub mesh for a given topic type. */
|
|
140
|
+
getGossipMeshPeerCount(topicType: TopicType): number;
|
|
141
|
+
|
|
93
142
|
validate(txs: Tx[]): Promise<void>;
|
|
94
143
|
|
|
95
144
|
addReqRespSubProtocol(
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from '@aztec/foundation/config';
|
|
7
7
|
import { MAX_RPC_TXS_LEN } from '@aztec/stdlib/interfaces/api-limit';
|
|
8
8
|
|
|
9
|
-
export type
|
|
9
|
+
export type MissingTxsCollectorType = 'new' | 'old';
|
|
10
10
|
|
|
11
11
|
export type TxCollectionConfig = {
|
|
12
12
|
/** How long to wait before starting reqresp for fast collection */
|
|
@@ -29,8 +29,26 @@ export type TxCollectionConfig = {
|
|
|
29
29
|
txCollectionFastMaxParallelRequestsPerNode: number;
|
|
30
30
|
/** Maximum number of transactions to request from a node in a single batch */
|
|
31
31
|
txCollectionNodeRpcMaxBatchSize: number;
|
|
32
|
-
/** Which collector implementation to use for
|
|
33
|
-
|
|
32
|
+
/** Which collector implementation to use for missing txs collection */
|
|
33
|
+
txCollectionMissingTxsCollectorType: MissingTxsCollectorType;
|
|
34
|
+
/** A comma-separated list of file store URLs (s3://, gs://, file://, http://) for tx collection */
|
|
35
|
+
txCollectionFileStoreUrls: string[];
|
|
36
|
+
/** Delay in ms before file store collection starts after slow collection is triggered */
|
|
37
|
+
txCollectionFileStoreSlowDelayMs: number;
|
|
38
|
+
/** Delay in ms before file store collection starts after fast collection is triggered */
|
|
39
|
+
txCollectionFileStoreFastDelayMs: number;
|
|
40
|
+
/** Number of concurrent workers for fast file store collection */
|
|
41
|
+
txCollectionFileStoreFastWorkerCount: number;
|
|
42
|
+
/** Number of concurrent workers for slow file store collection */
|
|
43
|
+
txCollectionFileStoreSlowWorkerCount: number;
|
|
44
|
+
/** Base backoff time in ms for fast file store collection retries */
|
|
45
|
+
txCollectionFileStoreFastBackoffBaseMs: number;
|
|
46
|
+
/** Base backoff time in ms for slow file store collection retries */
|
|
47
|
+
txCollectionFileStoreSlowBackoffBaseMs: number;
|
|
48
|
+
/** Max backoff time in ms for fast file store collection retries */
|
|
49
|
+
txCollectionFileStoreFastBackoffMaxMs: number;
|
|
50
|
+
/** Max backoff time in ms for slow file store collection retries */
|
|
51
|
+
txCollectionFileStoreSlowBackoffMaxMs: number;
|
|
34
52
|
};
|
|
35
53
|
|
|
36
54
|
export const txCollectionConfigMappings: ConfigMappingsType<TxCollectionConfig> = {
|
|
@@ -90,9 +108,59 @@ export const txCollectionConfigMappings: ConfigMappingsType<TxCollectionConfig>
|
|
|
90
108
|
description: 'Maximum number of transactions to request from a node in a single batch',
|
|
91
109
|
...numberConfigHelper(MAX_RPC_TXS_LEN),
|
|
92
110
|
},
|
|
93
|
-
|
|
94
|
-
env: '
|
|
95
|
-
description: 'Which collector implementation to use for
|
|
111
|
+
txCollectionMissingTxsCollectorType: {
|
|
112
|
+
env: 'TX_COLLECTION_MISSING_TXS_COLLECTOR_TYPE',
|
|
113
|
+
description: 'Which collector implementation to use for missing txs collection (new or old)',
|
|
96
114
|
...enumConfigHelper(['new', 'old'] as const, 'new'),
|
|
97
115
|
},
|
|
116
|
+
txCollectionFileStoreUrls: {
|
|
117
|
+
env: 'TX_COLLECTION_FILE_STORE_URLS',
|
|
118
|
+
description: 'A comma-separated list of file store URLs (s3://, gs://, file://, http://) for tx collection',
|
|
119
|
+
parseEnv: (val: string) =>
|
|
120
|
+
val
|
|
121
|
+
.split(',')
|
|
122
|
+
.map(url => url.trim())
|
|
123
|
+
.filter(url => url.length > 0),
|
|
124
|
+
defaultValue: [],
|
|
125
|
+
},
|
|
126
|
+
txCollectionFileStoreSlowDelayMs: {
|
|
127
|
+
env: 'TX_COLLECTION_FILE_STORE_SLOW_DELAY_MS',
|
|
128
|
+
description: 'Delay before file store collection starts after slow collection',
|
|
129
|
+
...numberConfigHelper(24_000),
|
|
130
|
+
},
|
|
131
|
+
txCollectionFileStoreFastDelayMs: {
|
|
132
|
+
env: 'TX_COLLECTION_FILE_STORE_FAST_DELAY_MS',
|
|
133
|
+
description: 'Delay before file store collection starts after fast collection',
|
|
134
|
+
...numberConfigHelper(2_000),
|
|
135
|
+
},
|
|
136
|
+
txCollectionFileStoreFastWorkerCount: {
|
|
137
|
+
env: 'TX_COLLECTION_FILE_STORE_FAST_WORKER_COUNT',
|
|
138
|
+
description: 'Number of concurrent workers for fast file store collection',
|
|
139
|
+
...numberConfigHelper(5),
|
|
140
|
+
},
|
|
141
|
+
txCollectionFileStoreSlowWorkerCount: {
|
|
142
|
+
env: 'TX_COLLECTION_FILE_STORE_SLOW_WORKER_COUNT',
|
|
143
|
+
description: 'Number of concurrent workers for slow file store collection',
|
|
144
|
+
...numberConfigHelper(2),
|
|
145
|
+
},
|
|
146
|
+
txCollectionFileStoreFastBackoffBaseMs: {
|
|
147
|
+
env: 'TX_COLLECTION_FILE_STORE_FAST_BACKOFF_BASE_MS',
|
|
148
|
+
description: 'Base backoff time in ms for fast file store collection retries',
|
|
149
|
+
...numberConfigHelper(1_000),
|
|
150
|
+
},
|
|
151
|
+
txCollectionFileStoreSlowBackoffBaseMs: {
|
|
152
|
+
env: 'TX_COLLECTION_FILE_STORE_SLOW_BACKOFF_BASE_MS',
|
|
153
|
+
description: 'Base backoff time in ms for slow file store collection retries',
|
|
154
|
+
...numberConfigHelper(5_000),
|
|
155
|
+
},
|
|
156
|
+
txCollectionFileStoreFastBackoffMaxMs: {
|
|
157
|
+
env: 'TX_COLLECTION_FILE_STORE_FAST_BACKOFF_MAX_MS',
|
|
158
|
+
description: 'Max backoff time in ms for fast file store collection retries',
|
|
159
|
+
...numberConfigHelper(5_000),
|
|
160
|
+
},
|
|
161
|
+
txCollectionFileStoreSlowBackoffMaxMs: {
|
|
162
|
+
env: 'TX_COLLECTION_FILE_STORE_SLOW_BACKOFF_MAX_MS',
|
|
163
|
+
description: 'Max backoff time in ms for slow file store collection retries',
|
|
164
|
+
...numberConfigHelper(30_000),
|
|
165
|
+
},
|
|
98
166
|
};
|