-
Notifications
You must be signed in to change notification settings - Fork 271
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Add timeouts for request / response stream connections #8434
feat: Add timeouts for request / response stream connections #8434
Conversation
…timeouts_to_individual_reqresp_connections
…timeouts_to_individual_reqresp_connections
Marking as draft to add the timeout variables environment configuration values for now |
|
||
// Attempt to ask all of our peers | ||
for (const peer of peers) { | ||
const response = await this.sendRequestToPeer(peer, subProtocol, payload); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It took me a bit to appreciate that we ask the nodes serially, and so the collective timeout is somewhat dependent on the individual timeout.
Should the collective timeout be instead defined based on the number of peers we want to dial serially?
For example, the config in the current test implicitly caps us at 2 peers we can ask.
Also, while thinking of it, we'll want to track how often nodes are needing to ask for data, and how long it take them to get it. If the answer is "frequently" and "a long time" we may need to ask peers in parallel.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes this is true, they are dependent on each other ( this is by design, there needs to be a hard timeout that is not depend on the number of peers we have ), further more these timeouts should probably be tuned to be per sub protocol, as the the tolerance for each sub protocol - if we do not care about the node we are querying should be entirely different.
Theres alot of complexity creeping up
I will draft issues for the above
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On the above, i began working on a rate limiting module today which will keep track of the who is asking for what. I'll have to integrate this data with the telemetry
…timeouts_to_individual_reqresp_connections
…timeouts_to_individual_reqresp_connections
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.55.0</summary> ## [0.55.0](aztec-package-v0.54.0...aztec-package-v0.55.0) (2024-09-13) ### Bug Fixes * Load prover node config from env ([#8525](#8525)) ([7065962](7065962)) ### Miscellaneous * Remove unneeded propose and da oracle ([#8474](#8474)) ([274a6b7](274a6b7)) </details> <details><summary>barretenberg.js: 0.55.0</summary> ## [0.55.0](barretenberg.js-v0.54.0...barretenberg.js-v0.55.0) (2024-09-13) ### Features * New test programs for wasm benchmarking ([#8389](#8389)) ([0b46e96](0b46e96)) </details> <details><summary>aztec-packages: 0.55.0</summary> ## [0.55.0](aztec-packages-v0.54.0...aztec-packages-v0.55.0) (2024-09-13) ### ⚠ BREAKING CHANGES * Add Not instruction in brillig ([#8488](#8488)) * refactor NoteGetterOptions::select API ([#8504](#8504)) * **avm:** variants for CAST/NOT opcode ([#8497](#8497)) * **avm:** variants for REVERT opcode ([#8487](#8487)) ### Features * (bb) remove redundant constraints on field/group elements when using goblin plonk ([#8409](#8409)) ([12a093d](12a093d)) * Add `Module::structs` (noir-lang/noir#6017) ([cb20e07](cb20e07)) * Add `TypedExpr::get_type` (noir-lang/noir#5992) ([875cfe6](875cfe6)) * Add assertions for ACVM `FunctionInput` `bit_size` (noir-lang/noir#5864) ([20d7576](20d7576)) * Add Not instruction in brillig ([#8488](#8488)) ([ceda361](ceda361)) * Add timeouts for request / response stream connections ([#8434](#8434)) ([190c27f](190c27f)) * **avm:** Parallelize polynomial alloc and set ([#8520](#8520)) ([7e73531](7e73531)) * **avm:** Variants for CAST/NOT opcode ([#8497](#8497)) ([bc609fa](bc609fa)) * **avm:** Variants for REVERT opcode ([#8487](#8487)) ([a0c8915](a0c8915)) * **bb:** Iterative constexpr_for ([#8502](#8502)) ([02c3330](02c3330)) * Better error message for misplaced doc comments (noir-lang/noir#5990) ([875cfe6](875cfe6)) * Change the layout of arrays and vectors to be a single pointer ([#8448](#8448)) ([3ad624c](3ad624c)) * Checking finalized sizes + a test of two folding verifiers ([#8503](#8503)) ([d9e3f4d](d9e3f4d)) * Extract brillig slice ops to reusable procedures (noir-lang/noir#6002) ([20d7576](20d7576)) * Format trait impl functions (noir-lang/noir#6016) ([cb20e07](cb20e07)) * Impl Hash and Eq on more comptime types (noir-lang/noir#6022) ([cb20e07](cb20e07)) * Implement LSP code action "Implement missing members" (noir-lang/noir#6020) ([cb20e07](cb20e07)) * Let `has_named_attribute` work for built-in attributes (noir-lang/noir#6024) ([cb20e07](cb20e07)) * LSP completion function detail (noir-lang/noir#5993) ([875cfe6](875cfe6)) * Native world state ([#7516](#7516)) ([c1aa6f7](c1aa6f7)) * New test programs for wasm benchmarking ([#8389](#8389)) ([0b46e96](0b46e96)) * Output timestamps in prover-stats raw logs ([#8476](#8476)) ([aa67a14](aa67a14)) * Rate limit peers in request response p2p interactions ([#8498](#8498)) ([00146fa](00146fa)) * Refactor NoteGetterOptions::select API ([#8504](#8504)) ([e527992](e527992)) * Sync from aztec-packages (noir-lang/noir#5971) ([875cfe6](875cfe6)) * Sync from aztec-packages (noir-lang/noir#6001) ([20d7576](20d7576)) * Use Zac's quicksort algorithm in stdlib sorting (noir-lang/noir#5940) ([20d7576](20d7576)) * Validators ensure transactions live in their p2p pool before attesting ([#8410](#8410)) ([bce1eea](bce1eea)) * Verification key stuff ([#8431](#8431)) ([11dc8ff](11dc8ff)) ### Bug Fixes * Correctly print string tokens (noir-lang/noir#6021) ([cb20e07](cb20e07)) * Enable verifier when deploying the networks ([#8500](#8500)) ([f6d31f1](f6d31f1)) * Error when comptime types are used in runtime code (noir-lang/noir#5987) ([875cfe6](875cfe6)) * Error when mutating comptime variables in non-comptime code (noir-lang/noir#6003) ([20d7576](20d7576)) * Fix some mistakes in arithmetic generics docs (noir-lang/noir#5999) ([20d7576](20d7576)) * Fix using lazily elaborated comptime globals (noir-lang/noir#5995) ([20d7576](20d7576)) * Help link was outdated (noir-lang/noir#6004) ([20d7576](20d7576)) * Load prover node config from env ([#8525](#8525)) ([7065962](7065962)) * Remove claim_public from fee juice ([#8337](#8337)) ([dca74ae](dca74ae)) * Try to move constant terms to one side for arithmetic generics (noir-lang/noir#6008) ([cb20e07](cb20e07)) * Use module name as line after which we'll insert auto-import (noir-lang/noir#6025) ([cb20e07](cb20e07)) ### Miscellaneous * Add some `pub use` and remove unused imports ([#8521](#8521)) ([8bd0755](8bd0755)) * **bb:** Fix mac build ([#8505](#8505)) ([32fd347](32fd347)), closes [#8499](#8499) * **bb:** Fix mac build ([#8522](#8522)) ([986e703](986e703)) * **ci:** Fix bb publishing ([#8486](#8486)) ([c210c36](c210c36)) * Fix a load of warnings in aztec-nr ([#8501](#8501)) ([35dc1e1](35dc1e1)) * Protogalaxy verifier matches prover 1 ([#8414](#8414)) ([5a76ec6](5a76ec6)) * Remove RC tracking in mem2reg (noir-lang/noir#6019) ([cb20e07](cb20e07)) * Remove unneeded propose and da oracle ([#8474](#8474)) ([274a6b7](274a6b7)) * Replace relative paths to noir-protocol-circuits ([b179c6b](b179c6b)) * Replace relative paths to noir-protocol-circuits ([1c042be](1c042be)) * Replace relative paths to noir-protocol-circuits ([1c8409f](1c8409f)) * Run mac builds on master ([#8519](#8519)) ([c458a79](c458a79)) * Single install script for cargo-binstall (noir-lang/noir#5998) ([20d7576](20d7576)) * Use uint32_t instead of size_t for databus data ([#8479](#8479)) ([79995c8](79995c8)) </details> <details><summary>barretenberg: 0.55.0</summary> ## [0.55.0](barretenberg-v0.54.0...barretenberg-v0.55.0) (2024-09-13) ### ⚠ BREAKING CHANGES * Add Not instruction in brillig ([#8488](#8488)) * **avm:** variants for CAST/NOT opcode ([#8497](#8497)) * **avm:** variants for REVERT opcode ([#8487](#8487)) ### Features * (bb) remove redundant constraints on field/group elements when using goblin plonk ([#8409](#8409)) ([12a093d](12a093d)) * Add Not instruction in brillig ([#8488](#8488)) ([ceda361](ceda361)) * **avm:** Parallelize polynomial alloc and set ([#8520](#8520)) ([7e73531](7e73531)) * **avm:** Variants for CAST/NOT opcode ([#8497](#8497)) ([bc609fa](bc609fa)) * **avm:** Variants for REVERT opcode ([#8487](#8487)) ([a0c8915](a0c8915)) * **bb:** Iterative constexpr_for ([#8502](#8502)) ([02c3330](02c3330)) * Checking finalized sizes + a test of two folding verifiers ([#8503](#8503)) ([d9e3f4d](d9e3f4d)) * Native world state ([#7516](#7516)) ([c1aa6f7](c1aa6f7)) * New test programs for wasm benchmarking ([#8389](#8389)) ([0b46e96](0b46e96)) * Verification key stuff ([#8431](#8431)) ([11dc8ff](11dc8ff)) ### Miscellaneous * **bb:** Fix mac build ([#8505](#8505)) ([32fd347](32fd347)), closes [#8499](#8499) * **bb:** Fix mac build ([#8522](#8522)) ([986e703](986e703)) * Protogalaxy verifier matches prover 1 ([#8414](#8414)) ([5a76ec6](5a76ec6)) * Use uint32_t instead of size_t for databus data ([#8479](#8479)) ([79995c8](79995c8)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.55.0</summary> ## [0.55.0](AztecProtocol/aztec-packages@aztec-package-v0.54.0...aztec-package-v0.55.0) (2024-09-13) ### Bug Fixes * Load prover node config from env ([#8525](AztecProtocol/aztec-packages#8525)) ([7065962](AztecProtocol/aztec-packages@7065962)) ### Miscellaneous * Remove unneeded propose and da oracle ([#8474](AztecProtocol/aztec-packages#8474)) ([274a6b7](AztecProtocol/aztec-packages@274a6b7)) </details> <details><summary>barretenberg.js: 0.55.0</summary> ## [0.55.0](AztecProtocol/aztec-packages@barretenberg.js-v0.54.0...barretenberg.js-v0.55.0) (2024-09-13) ### Features * New test programs for wasm benchmarking ([#8389](AztecProtocol/aztec-packages#8389)) ([0b46e96](AztecProtocol/aztec-packages@0b46e96)) </details> <details><summary>aztec-packages: 0.55.0</summary> ## [0.55.0](AztecProtocol/aztec-packages@aztec-packages-v0.54.0...aztec-packages-v0.55.0) (2024-09-13) ### ⚠ BREAKING CHANGES * Add Not instruction in brillig ([#8488](AztecProtocol/aztec-packages#8488)) * refactor NoteGetterOptions::select API ([#8504](AztecProtocol/aztec-packages#8504)) * **avm:** variants for CAST/NOT opcode ([#8497](AztecProtocol/aztec-packages#8497)) * **avm:** variants for REVERT opcode ([#8487](AztecProtocol/aztec-packages#8487)) ### Features * (bb) remove redundant constraints on field/group elements when using goblin plonk ([#8409](AztecProtocol/aztec-packages#8409)) ([12a093d](AztecProtocol/aztec-packages@12a093d)) * Add `Module::structs` (noir-lang/noir#6017) ([cb20e07](AztecProtocol/aztec-packages@cb20e07)) * Add `TypedExpr::get_type` (noir-lang/noir#5992) ([875cfe6](AztecProtocol/aztec-packages@875cfe6)) * Add assertions for ACVM `FunctionInput` `bit_size` (noir-lang/noir#5864) ([20d7576](AztecProtocol/aztec-packages@20d7576)) * Add Not instruction in brillig ([#8488](AztecProtocol/aztec-packages#8488)) ([ceda361](AztecProtocol/aztec-packages@ceda361)) * Add timeouts for request / response stream connections ([#8434](AztecProtocol/aztec-packages#8434)) ([190c27f](AztecProtocol/aztec-packages@190c27f)) * **avm:** Parallelize polynomial alloc and set ([#8520](AztecProtocol/aztec-packages#8520)) ([7e73531](AztecProtocol/aztec-packages@7e73531)) * **avm:** Variants for CAST/NOT opcode ([#8497](AztecProtocol/aztec-packages#8497)) ([bc609fa](AztecProtocol/aztec-packages@bc609fa)) * **avm:** Variants for REVERT opcode ([#8487](AztecProtocol/aztec-packages#8487)) ([a0c8915](AztecProtocol/aztec-packages@a0c8915)) * **bb:** Iterative constexpr_for ([#8502](AztecProtocol/aztec-packages#8502)) ([02c3330](AztecProtocol/aztec-packages@02c3330)) * Better error message for misplaced doc comments (noir-lang/noir#5990) ([875cfe6](AztecProtocol/aztec-packages@875cfe6)) * Change the layout of arrays and vectors to be a single pointer ([#8448](AztecProtocol/aztec-packages#8448)) ([3ad624c](AztecProtocol/aztec-packages@3ad624c)) * Checking finalized sizes + a test of two folding verifiers ([#8503](AztecProtocol/aztec-packages#8503)) ([d9e3f4d](AztecProtocol/aztec-packages@d9e3f4d)) * Extract brillig slice ops to reusable procedures (noir-lang/noir#6002) ([20d7576](AztecProtocol/aztec-packages@20d7576)) * Format trait impl functions (noir-lang/noir#6016) ([cb20e07](AztecProtocol/aztec-packages@cb20e07)) * Impl Hash and Eq on more comptime types (noir-lang/noir#6022) ([cb20e07](AztecProtocol/aztec-packages@cb20e07)) * Implement LSP code action "Implement missing members" (noir-lang/noir#6020) ([cb20e07](AztecProtocol/aztec-packages@cb20e07)) * Let `has_named_attribute` work for built-in attributes (noir-lang/noir#6024) ([cb20e07](AztecProtocol/aztec-packages@cb20e07)) * LSP completion function detail (noir-lang/noir#5993) ([875cfe6](AztecProtocol/aztec-packages@875cfe6)) * Native world state ([#7516](AztecProtocol/aztec-packages#7516)) ([c1aa6f7](AztecProtocol/aztec-packages@c1aa6f7)) * New test programs for wasm benchmarking ([#8389](AztecProtocol/aztec-packages#8389)) ([0b46e96](AztecProtocol/aztec-packages@0b46e96)) * Output timestamps in prover-stats raw logs ([#8476](AztecProtocol/aztec-packages#8476)) ([aa67a14](AztecProtocol/aztec-packages@aa67a14)) * Rate limit peers in request response p2p interactions ([#8498](AztecProtocol/aztec-packages#8498)) ([00146fa](AztecProtocol/aztec-packages@00146fa)) * Refactor NoteGetterOptions::select API ([#8504](AztecProtocol/aztec-packages#8504)) ([e527992](AztecProtocol/aztec-packages@e527992)) * Sync from aztec-packages (noir-lang/noir#5971) ([875cfe6](AztecProtocol/aztec-packages@875cfe6)) * Sync from aztec-packages (noir-lang/noir#6001) ([20d7576](AztecProtocol/aztec-packages@20d7576)) * Use Zac's quicksort algorithm in stdlib sorting (noir-lang/noir#5940) ([20d7576](AztecProtocol/aztec-packages@20d7576)) * Validators ensure transactions live in their p2p pool before attesting ([#8410](AztecProtocol/aztec-packages#8410)) ([bce1eea](AztecProtocol/aztec-packages@bce1eea)) * Verification key stuff ([#8431](AztecProtocol/aztec-packages#8431)) ([11dc8ff](AztecProtocol/aztec-packages@11dc8ff)) ### Bug Fixes * Correctly print string tokens (noir-lang/noir#6021) ([cb20e07](AztecProtocol/aztec-packages@cb20e07)) * Enable verifier when deploying the networks ([#8500](AztecProtocol/aztec-packages#8500)) ([f6d31f1](AztecProtocol/aztec-packages@f6d31f1)) * Error when comptime types are used in runtime code (noir-lang/noir#5987) ([875cfe6](AztecProtocol/aztec-packages@875cfe6)) * Error when mutating comptime variables in non-comptime code (noir-lang/noir#6003) ([20d7576](AztecProtocol/aztec-packages@20d7576)) * Fix some mistakes in arithmetic generics docs (noir-lang/noir#5999) ([20d7576](AztecProtocol/aztec-packages@20d7576)) * Fix using lazily elaborated comptime globals (noir-lang/noir#5995) ([20d7576](AztecProtocol/aztec-packages@20d7576)) * Help link was outdated (noir-lang/noir#6004) ([20d7576](AztecProtocol/aztec-packages@20d7576)) * Load prover node config from env ([#8525](AztecProtocol/aztec-packages#8525)) ([7065962](AztecProtocol/aztec-packages@7065962)) * Remove claim_public from fee juice ([#8337](AztecProtocol/aztec-packages#8337)) ([dca74ae](AztecProtocol/aztec-packages@dca74ae)) * Try to move constant terms to one side for arithmetic generics (noir-lang/noir#6008) ([cb20e07](AztecProtocol/aztec-packages@cb20e07)) * Use module name as line after which we'll insert auto-import (noir-lang/noir#6025) ([cb20e07](AztecProtocol/aztec-packages@cb20e07)) ### Miscellaneous * Add some `pub use` and remove unused imports ([#8521](AztecProtocol/aztec-packages#8521)) ([8bd0755](AztecProtocol/aztec-packages@8bd0755)) * **bb:** Fix mac build ([#8505](AztecProtocol/aztec-packages#8505)) ([32fd347](AztecProtocol/aztec-packages@32fd347)), closes [#8499](AztecProtocol/aztec-packages#8499) * **bb:** Fix mac build ([#8522](AztecProtocol/aztec-packages#8522)) ([986e703](AztecProtocol/aztec-packages@986e703)) * **ci:** Fix bb publishing ([#8486](AztecProtocol/aztec-packages#8486)) ([c210c36](AztecProtocol/aztec-packages@c210c36)) * Fix a load of warnings in aztec-nr ([#8501](AztecProtocol/aztec-packages#8501)) ([35dc1e1](AztecProtocol/aztec-packages@35dc1e1)) * Protogalaxy verifier matches prover 1 ([#8414](AztecProtocol/aztec-packages#8414)) ([5a76ec6](AztecProtocol/aztec-packages@5a76ec6)) * Remove RC tracking in mem2reg (noir-lang/noir#6019) ([cb20e07](AztecProtocol/aztec-packages@cb20e07)) * Remove unneeded propose and da oracle ([#8474](AztecProtocol/aztec-packages#8474)) ([274a6b7](AztecProtocol/aztec-packages@274a6b7)) * Replace relative paths to noir-protocol-circuits ([b179c6b](AztecProtocol/aztec-packages@b179c6b)) * Replace relative paths to noir-protocol-circuits ([1c042be](AztecProtocol/aztec-packages@1c042be)) * Replace relative paths to noir-protocol-circuits ([1c8409f](AztecProtocol/aztec-packages@1c8409f)) * Run mac builds on master ([#8519](AztecProtocol/aztec-packages#8519)) ([c458a79](AztecProtocol/aztec-packages@c458a79)) * Single install script for cargo-binstall (noir-lang/noir#5998) ([20d7576](AztecProtocol/aztec-packages@20d7576)) * Use uint32_t instead of size_t for databus data ([#8479](AztecProtocol/aztec-packages#8479)) ([79995c8](AztecProtocol/aztec-packages@79995c8)) </details> <details><summary>barretenberg: 0.55.0</summary> ## [0.55.0](AztecProtocol/aztec-packages@barretenberg-v0.54.0...barretenberg-v0.55.0) (2024-09-13) ### ⚠ BREAKING CHANGES * Add Not instruction in brillig ([#8488](AztecProtocol/aztec-packages#8488)) * **avm:** variants for CAST/NOT opcode ([#8497](AztecProtocol/aztec-packages#8497)) * **avm:** variants for REVERT opcode ([#8487](AztecProtocol/aztec-packages#8487)) ### Features * (bb) remove redundant constraints on field/group elements when using goblin plonk ([#8409](AztecProtocol/aztec-packages#8409)) ([12a093d](AztecProtocol/aztec-packages@12a093d)) * Add Not instruction in brillig ([#8488](AztecProtocol/aztec-packages#8488)) ([ceda361](AztecProtocol/aztec-packages@ceda361)) * **avm:** Parallelize polynomial alloc and set ([#8520](AztecProtocol/aztec-packages#8520)) ([7e73531](AztecProtocol/aztec-packages@7e73531)) * **avm:** Variants for CAST/NOT opcode ([#8497](AztecProtocol/aztec-packages#8497)) ([bc609fa](AztecProtocol/aztec-packages@bc609fa)) * **avm:** Variants for REVERT opcode ([#8487](AztecProtocol/aztec-packages#8487)) ([a0c8915](AztecProtocol/aztec-packages@a0c8915)) * **bb:** Iterative constexpr_for ([#8502](AztecProtocol/aztec-packages#8502)) ([02c3330](AztecProtocol/aztec-packages@02c3330)) * Checking finalized sizes + a test of two folding verifiers ([#8503](AztecProtocol/aztec-packages#8503)) ([d9e3f4d](AztecProtocol/aztec-packages@d9e3f4d)) * Native world state ([#7516](AztecProtocol/aztec-packages#7516)) ([c1aa6f7](AztecProtocol/aztec-packages@c1aa6f7)) * New test programs for wasm benchmarking ([#8389](AztecProtocol/aztec-packages#8389)) ([0b46e96](AztecProtocol/aztec-packages@0b46e96)) * Verification key stuff ([#8431](AztecProtocol/aztec-packages#8431)) ([11dc8ff](AztecProtocol/aztec-packages@11dc8ff)) ### Miscellaneous * **bb:** Fix mac build ([#8505](AztecProtocol/aztec-packages#8505)) ([32fd347](AztecProtocol/aztec-packages@32fd347)), closes [#8499](AztecProtocol/aztec-packages#8499) * **bb:** Fix mac build ([#8522](AztecProtocol/aztec-packages#8522)) ([986e703](AztecProtocol/aztec-packages@986e703)) * Protogalaxy verifier matches prover 1 ([#8414](AztecProtocol/aztec-packages#8414)) ([5a76ec6](AztecProtocol/aztec-packages@5a76ec6)) * Use uint32_t instead of size_t for databus data ([#8479](AztecProtocol/aztec-packages#8479)) ([79995c8](AztecProtocol/aztec-packages@79995c8)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Overview
One of the key criteria specified within AztecProtocol/engineering-designs#19 is that Request Response connections must have a timeout associated with them,
This PR adds capabilities to the node such that these connections will time out once the configured time passes.