Zebra/zebra-chain/src
teor d689e7344b
fix(net): Fix potential network hangs, and reduce code complexity (#7859)
* Refactor return type of poll_discover()

* Simplify poll_ready() by removing preselected peers

* Fix peer set readiness check

* Pass task context correctly to background tasks

* Make poll_discover() return Pending

* Make poll_inventory() return Pending

* Make poll_unready() return Poll::Pending

* Simplify with futures::ready!() and ?

* When there are no peers, wake on newly ready peers, or new peers, in that order

* Preserve the original waker when there are no unready peers

* Fix polling docs and remove unnecessary code

* Make sure we're ignoring Poll::Pending not Result

* Make panic checking method names clearer

* Fix connection Client task wakeups and error handling

* Cleanup connection panic handling and add wakeup docs

* Fix connection client task wakeups to prevent hangs

* Simplify error and pending handling

* Clarify inventory set behaviour

* Define peer set poll_* methods so they return Ok if they do something

* Clarify documentation

Co-authored-by: Arya <aryasolhi@gmail.com>

* Fix test that depended on preselected peers

* Check ready peers for errors before sending requests to them

* Fix a hanging test by not waiting for irrelevant actions

* Only remove cancel handles when they are required

* fix incorrect panic on termination setting

* Clarify method comments

Co-authored-by: Arya <aryasolhi@gmail.com>

---------

Co-authored-by: Arya <aryasolhi@gmail.com>
2023-11-16 19:53:24 +00:00
..
amount build(deps): bump insta from 1.15.0 to 1.17.1 (#4884) 2022-08-04 15:44:44 +00:00
block chore: fix typos (#7877) 2023-10-30 20:06:35 +00:00
chain_sync_status fix(test): Move test-only code to test-only modules (#5777) 2022-12-08 01:06:11 +00:00
chain_tip change(chain): Refactor the handling of height differences (#6330) 2023-03-29 23:06:31 +00:00
diagnostic fix(net): Fix potential network hangs, and reduce code complexity (#7859) 2023-11-16 19:53:24 +00:00
fmt cleanup(clippy): Use inline format strings (#5489) 2022-10-27 13:25:18 +00:00
history_tree refactor(anchorSapling): Change type to force consensus rule validation (#3544) 2022-02-17 03:20:22 +00:00
orchard cleanup(clippy): Remove unnecessary `try_into()` with `cargo clippy --fix` (#7940) 2023-11-14 20:31:49 +00:00
parallel change(state): Make the types for finalized blocks consistent (#7923) 2023-11-08 22:06:16 +00:00
parameters Fix an incorrect consensus-critical comment (#7774) 2023-10-19 22:18:22 +00:00
primitives cleanup(rust): Fix new nightly clippy warnings (#7135) 2023-07-05 07:11:27 +00:00
sapling cleanup(clippy): Remove unnecessary `try_into()` with `cargo clippy --fix` (#7940) 2023-11-14 20:31:49 +00:00
serialization build(deps): bump the log-time group with 2 updates (#7579) 2023-09-20 23:41:05 +00:00
sprout change(state): Make the types for finalized blocks consistent (#7923) 2023-11-08 22:06:16 +00:00
transaction change(deps): Run `cargo update` (#7429) 2023-08-31 00:49:01 +00:00
transparent cleanup(deps): Bump sha2 and secp256k1 to remove duplicate dependencies (#7238) 2023-07-18 07:13:40 +00:00
value_balance cleanup(rust): Fix new nightly clippy warnings (#7135) 2023-07-05 07:11:27 +00:00
work fix(rpc): Fix bugs and performance of `getnetworksolps` & `getnetworkhashps` RPCs (#7647) 2023-10-11 02:02:51 +00:00
amount.rs fix(state): Limit the retrieval of note commitment subtrees (#7734) 2023-10-12 20:00:43 +00:00
block.rs Fix new nightly clippy and rustc lints (#7860) 2023-10-27 19:35:57 +00:00
chain_sync_status.rs fix(test): Move test-only code to test-only modules (#5777) 2022-12-08 01:06:11 +00:00
chain_tip.rs change(chain): Refactor the handling of height differences (#6330) 2023-03-29 23:06:31 +00:00
diagnostic.rs fix(panic): Stop panicking on async task cancellation on shutdown in network and state futures (#7219) 2023-07-18 04:53:26 +00:00
error.rs fix(errors): Handle randomness generation and invalid random values as errors in cryptographic code (#6385) 2023-04-20 17:49:21 +00:00
fmt.rs cleanup(test): Make test debugging output more readable (#7027) 2023-06-21 15:02:05 +00:00
history_tree.rs cleanup(clippy): Use inline format strings (#5489) 2022-10-27 13:25:18 +00:00
lib.rs change(docs): Replace doc.zebra.zfnd.org API documentation with docs.rs (#7886) 2023-11-01 22:09:40 +00:00
orchard.rs cleanup(cryptography): Remove unused shielded key and address code (#5476) 2022-10-29 20:59:55 +00:00
parallel.rs 1. fix(perf): Run CPU-intensive state updates in parallel rayon threads (#4802) 2022-07-22 12:19:11 -04:00
parameters.rs Cleanup a few arbitrary impls (#2222) 2021-05-28 09:49:28 -03:00
primitives.rs change(rpc): add validateaddress method (#6086) 2023-02-03 02:26:58 +00:00
sapling.rs cleanup(cryptography): Remove unused shielded key and address code (#5476) 2022-10-29 20:59:55 +00:00
serialization.rs Halborn 2023 02 20 (#6297) 2023-03-13 18:10:15 +00:00
shutdown.rs Fix shutdown panics (#1637) 2021-02-03 19:03:28 +10:00
sprout.rs cleanup(cryptography): Remove unused shielded key and address code (#5476) 2022-10-29 20:59:55 +00:00
subtree.rs change(state): Refactor the naming of note commitment subtrees (#7855) 2023-10-30 20:06:54 +00:00
transaction.rs Fix new nightly clippy and rustc lints (#7860) 2023-10-27 19:35:57 +00:00
transparent.rs fix(build): add elasticsearch feature to block serialize (#6709) 2023-06-14 19:01:39 +00:00
value_balance.rs fix(state): Limit the retrieval of note commitment subtrees (#7734) 2023-10-12 20:00:43 +00:00
work.rs Replace primitives_types with uint (#2350) 2021-06-18 15:35:05 -03:00