Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Enable QUIC client by default. Add arg to disable QUIC client. #26879

Merged
merged 5 commits into from
Aug 3, 2022
Merged

Enable QUIC client by default. Add arg to disable QUIC client. #26879

merged 5 commits into from
Aug 3, 2022

Conversation

willhickey
Copy link
Contributor

Problem

  • As of v1.10.32 the validator listens for QUIC connections by default
  • The validator can forward transactions via quic if run with --tpu-use-quic, but doesn't by default

Summary of Changes

  • Switch the default client behavior to use QUIC
  • Add argument to disable the quic client

sakridge
sakridge previously approved these changes Aug 2, 2022
Copy link
Contributor

@sakridge sakridge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks!

validator/src/main.rs Outdated Show resolved Hide resolved
@pgarg66
Copy link
Contributor

pgarg66 commented Aug 2, 2022

Looks like test_connection_cache is failing due to a bug in the test. It's failing specifically when QUIC is enabled.

The test creates a list of IPAddresses (and ports), creates connections using the addresses, and then looks up the table using address as the key. With QUIC, we are adding an offset (6) to the port. So the key (address/port) in the table is different than what the test had created.

Looking up 215.131.162.105:80
First entry in the table: 215.131.162.105:86

Maybe the test can be disabled as part of this PR, and an issue can be created to fix the test as a follow up PR?

@mergify mergify bot dismissed sakridge’s stale review August 2, 2022 18:25

Pull request has been modified.

@willhickey willhickey merged commit 4c29750 into solana-labs:master Aug 3, 2022
@behzadnouri
Copy link
Contributor

@willhickey Seems like this commit is causing these two tests to timeout in coverage CI:

banking_stage::tests::test_forwarder_budget
banking_stage::tests::test_handle_forwarding

The CI was also failing:
https://buildkite.com/solana-labs/solana/builds/78901

@pgarg66
Copy link
Contributor

pgarg66 commented Aug 4, 2022

I briefly looked at these two tests. The receiver for the forwarded transactions is UDP based (in the tests). Since now we are using QUIC for forwarding the transaction, nothing is received on the UDP port, and it waits for ever.

                recv_socket
                    .set_nonblocking(expected_num_forwarded == 0)
                    .unwrap();

                let mut packets = vec![Packet::default(); 2];
                let num_received = recv_mmsg(recv_socket, &mut packets[..]).unwrap_or_default();

The solution will be start a QUIC streamer on the receiver port, and use the channel provided to the streamer to receive the packets.

@behzadnouri
Copy link
Contributor

behzadnouri commented Aug 4, 2022

@willhickey I see that in #26912 you are commenting out the tests.

There is no tracking issues to fix those tests and you commenting them out prevents compile time checks that code still compiles.

  • Can you please instead of commenting out tests use #[ignore] so that the code is at least compile checked?
  • Can you please open a tracking issue to fix the test if you are ignoring tests?

@behzadnouri
Copy link
Contributor

This commit also broke:

cli::tests::test_cli_parse_dos_valid_signatures

steviez pushed a commit that referenced this pull request Aug 4, 2022
#26913)

Revert "Enable QUIC client by default. Add arg to disable QUIC client. (#26879)"

This reverts commit 4c29750.
@willhickey
Copy link
Contributor Author

This commit also broke:

cli::tests::test_cli_parse_dos_valid_signatures

Yeah... there are a bunch of broken tests.

PR #26913 has landed to revert this so CI should be unblocked. I'll work on cleaning up the tests and open a new PR

xiangzhu70 pushed a commit to xiangzhu70/solana that referenced this pull request Aug 17, 2022
solana-labs#26913)

Revert "Enable QUIC client by default. Add arg to disable QUIC client. (solana-labs#26879)"

This reverts commit 4c29750.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants