Skip to content
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

flex-error: resolve conflicts with master #945

Merged
merged 3 commits into from
Aug 7, 2021

Conversation

thanethomson
Copy link
Contributor

Follows from #923

  • Referenced an issue explaining the need for the change
  • Updated all relevant documentation in docs
  • Updated all code comments where relevant
  • Wrote tests
  • Added entry in .changelog/

thanethomson and others added 3 commits August 4, 2021 09:59
* Implement thread-safe cloning of a secret connection

Signed-off-by: Thane Thomson <[email protected]>

* Expand documentation for SecretConnection on threading considerations

Signed-off-by: Thane Thomson <[email protected]>

* Extract peer construction into its own method

Signed-off-by: Thane Thomson <[email protected]>

* Add test for cloned SecretConnection

This adds a `TcpStream`-based test for parallelizing operations on a
`SecretConnection`. I used `TcpStream` instead of the buffered reader in
the other tests because it wasn't feasible to implement the `TryClone`
trait for that buffered pipe implementation.

Signed-off-by: Thane Thomson <[email protected]>

* Add more messages to test

Signed-off-by: Thane Thomson <[email protected]>

* Expand comment for clarity

Signed-off-by: Thane Thomson <[email protected]>

* Add .changelog entry

Signed-off-by: Thane Thomson <[email protected]>

* Restore half-duplex operations

Signed-off-by: Thane Thomson <[email protected]>

* Extract encrypt/decrypt fns as independent methods

Signed-off-by: Thane Thomson <[email protected]>

* Remove unnecessary trait bounds

Signed-off-by: Thane Thomson <[email protected]>

* Extract send/receive state

Signed-off-by: Thane Thomson <[email protected]>

* Extract read/write functionality as standalone methods

Signed-off-by: Thane Thomson <[email protected]>

* Add logic to facilitate splitting SecretConnection into its sending and receiving halves

Signed-off-by: Thane Thomson <[email protected]>

* Restore split SecretConnection test using new semantics

Signed-off-by: Thane Thomson <[email protected]>

* Update changelog entry

Signed-off-by: Thane Thomson <[email protected]>

* Update docs for `SecretConnection`

Signed-off-by: Thane Thomson <[email protected]>

* Condense error reporting

Signed-off-by: Thane Thomson <[email protected]>

* Extract TryClone trait into its own crate

As per the discussion at
#938 (comment),
this extracts the `TryClone` trait into a new crate called
`tendermint-std-ext` in the `std-ext` directory.

This new crate is intended to contain any code that we need that extends
the Rust standard library.

Signed-off-by: Thane Thomson <[email protected]>

* Reorder imports

Signed-off-by: Thane Thomson <[email protected]>

* Assert validation regardless of debug build

This introduces the internal encryption assertions at runtime regardless
of build type. This may introduce a small performance hit, but it's
probably worth it to ensure correctness.

Effectively this is keeping an eye on the code in the
`encrypt_and_write` fn to ensure its correctness.

Signed-off-by: Thane Thomson <[email protected]>

* Remove remote_pubkey optionality from sender/receiver halves

Signed-off-by: Thane Thomson <[email protected]>

* Update SecretConnection docs with comment content

Signed-off-by: Thane Thomson <[email protected]>

* Fix doc link to TryClone trait

Signed-off-by: Thane Thomson <[email protected]>

* Fix doc link to TryClone trait

Signed-off-by: Thane Thomson <[email protected]>

* Add docs on SecretConnection failures and connection integrity

Signed-off-by: Thane Thomson <[email protected]>

* Synchronize sending/receiving failures to comply with crypto algorithm constraints

Signed-off-by: Thane Thomson <[email protected]>

* Rename try_split method to split for SecretConnection

Signed-off-by: Thane Thomson <[email protected]>

* Remove redundant field name prefixes

Signed-off-by: Thane Thomson <[email protected]>

* Fix broken link in docs

Signed-off-by: Thane Thomson <[email protected]>
* Fix needless borrows in codebase

Signed-off-by: Thane Thomson <[email protected]>

* Ignore needless collect warning (we do actually seem to need it)

Signed-off-by: Thane Thomson <[email protected]>

* Remove trailing semicolon in macro to fix docs compiling

Signed-off-by: Thane Thomson <[email protected]>
Signed-off-by: Thane Thomson <[email protected]>
@codecov-commenter
Copy link

Codecov Report

Merging #945 (1efaa00) into soares/flex-error (2ea6da4) will increase coverage by 0.1%.
The diff coverage is 88.8%.

Impacted file tree graph

@@                 Coverage Diff                 @@
##           soares/flex-error    #945     +/-   ##
===================================================
+ Coverage               71.4%   71.6%   +0.1%     
===================================================
  Files                    201     203      +2     
  Lines                  16361   16480    +119     
===================================================
+ Hits                   11698   11811    +113     
- Misses                  4663    4669      +6     
Impacted Files Coverage Δ
light-client/src/macros.rs 59.3% <ø> (ø)
light-client/src/store/memory.rs 66.6% <ø> (ø)
tendermint/src/chain/id.rs 71.6% <0.0%> (ø)
p2p/src/secret_connection.rs 88.8% <83.5%> (+0.4%) ⬆️
light-client/src/components/verifier.rs 100.0% <100.0%> (ø)
light-client/src/peer_list.rs 88.0% <100.0%> (ø)
light-client/src/predicates.rs 97.3% <100.0%> (ø)
light-client/src/supervisor.rs 89.2% <100.0%> (ø)
std-ext/src/lib.rs 100.0% <100.0%> (ø)
std-ext/src/try_clone.rs 100.0% <100.0%> (ø)
... and 13 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2ea6da4...1efaa00. Read the comment docs.

@thanethomson thanethomson merged commit bc2f0cb into soares/flex-error Aug 7, 2021
@thanethomson thanethomson deleted the thane/flex-error branch August 7, 2021 19:13
thanethomson added a commit that referenced this pull request Aug 7, 2021
* Use flex-error for tendermint

* Use flex-error for p2p

* Use flex-error for light-client

* Use flex-error for light_client::predicates

* Fix lint

* Use flex-error for builder and io errors

* Use flex-error for rpc errors

* Use flex-error for protobuf errors

* Use flex-error for abci

* Fix test_bisection_no_witness_left

* Fix build errors in all-features

* Fix failing tests

* Fix more failures

* Fix tungstenite error under wasm target

* Fix incoming_fixtures test

* Fix conflict

* Update flex-error to v0.4.0

* set std feature in flex-error instead of individual crates

* Add flex-error patch to tools/Cargo.toml

* Use published version of flex-error v0.4.1

* Enable flex-error/eyre_tracer feature by default

* Add .changelog entry (#940)

Signed-off-by: Thane Thomson <[email protected]>

* flex-error: resolve conflicts with `master` (#945)

* Implement full-duplex secret connection (#938)

* Implement thread-safe cloning of a secret connection

Signed-off-by: Thane Thomson <[email protected]>

* Expand documentation for SecretConnection on threading considerations

Signed-off-by: Thane Thomson <[email protected]>

* Extract peer construction into its own method

Signed-off-by: Thane Thomson <[email protected]>

* Add test for cloned SecretConnection

This adds a `TcpStream`-based test for parallelizing operations on a
`SecretConnection`. I used `TcpStream` instead of the buffered reader in
the other tests because it wasn't feasible to implement the `TryClone`
trait for that buffered pipe implementation.

Signed-off-by: Thane Thomson <[email protected]>

* Add more messages to test

Signed-off-by: Thane Thomson <[email protected]>

* Expand comment for clarity

Signed-off-by: Thane Thomson <[email protected]>

* Add .changelog entry

Signed-off-by: Thane Thomson <[email protected]>

* Restore half-duplex operations

Signed-off-by: Thane Thomson <[email protected]>

* Extract encrypt/decrypt fns as independent methods

Signed-off-by: Thane Thomson <[email protected]>

* Remove unnecessary trait bounds

Signed-off-by: Thane Thomson <[email protected]>

* Extract send/receive state

Signed-off-by: Thane Thomson <[email protected]>

* Extract read/write functionality as standalone methods

Signed-off-by: Thane Thomson <[email protected]>

* Add logic to facilitate splitting SecretConnection into its sending and receiving halves

Signed-off-by: Thane Thomson <[email protected]>

* Restore split SecretConnection test using new semantics

Signed-off-by: Thane Thomson <[email protected]>

* Update changelog entry

Signed-off-by: Thane Thomson <[email protected]>

* Update docs for `SecretConnection`

Signed-off-by: Thane Thomson <[email protected]>

* Condense error reporting

Signed-off-by: Thane Thomson <[email protected]>

* Extract TryClone trait into its own crate

As per the discussion at
#938 (comment),
this extracts the `TryClone` trait into a new crate called
`tendermint-std-ext` in the `std-ext` directory.

This new crate is intended to contain any code that we need that extends
the Rust standard library.

Signed-off-by: Thane Thomson <[email protected]>

* Reorder imports

Signed-off-by: Thane Thomson <[email protected]>

* Assert validation regardless of debug build

This introduces the internal encryption assertions at runtime regardless
of build type. This may introduce a small performance hit, but it's
probably worth it to ensure correctness.

Effectively this is keeping an eye on the code in the
`encrypt_and_write` fn to ensure its correctness.

Signed-off-by: Thane Thomson <[email protected]>

* Remove remote_pubkey optionality from sender/receiver halves

Signed-off-by: Thane Thomson <[email protected]>

* Update SecretConnection docs with comment content

Signed-off-by: Thane Thomson <[email protected]>

* Fix doc link to TryClone trait

Signed-off-by: Thane Thomson <[email protected]>

* Fix doc link to TryClone trait

Signed-off-by: Thane Thomson <[email protected]>

* Add docs on SecretConnection failures and connection integrity

Signed-off-by: Thane Thomson <[email protected]>

* Synchronize sending/receiving failures to comply with crypto algorithm constraints

Signed-off-by: Thane Thomson <[email protected]>

* Rename try_split method to split for SecretConnection

Signed-off-by: Thane Thomson <[email protected]>

* Remove redundant field name prefixes

Signed-off-by: Thane Thomson <[email protected]>

* Fix broken link in docs

Signed-off-by: Thane Thomson <[email protected]>

* Fix recent clippy errors on `master` (#941)

* Fix needless borrows in codebase

Signed-off-by: Thane Thomson <[email protected]>

* Ignore needless collect warning (we do actually seem to need it)

Signed-off-by: Thane Thomson <[email protected]>

* Remove trailing semicolon in macro to fix docs compiling

Signed-off-by: Thane Thomson <[email protected]>

* Remove unnecessary macros

Signed-off-by: Thane Thomson <[email protected]>

* Correct error messages

Signed-off-by: Thane Thomson <[email protected]>

Co-authored-by: Thane Thomson <[email protected]>
Co-authored-by: Thane Thomson <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants