h3/quic: add experimental option to the Android/JVM EngineBuilder#2163
h3/quic: add experimental option to the Android/JVM EngineBuilder#2163
Conversation
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Signed-off-by: Mike Schore <mike.schore@gmail.com>
Signed-off-by: Mike Schore <mike.schore@gmail.com>
Signed-off-by: Mike Schore <mike.schore@gmail.com>
Signed-off-by: Mike Schore <mike.schore@gmail.com>
Signed-off-by: Mike Schore <mike.schore@gmail.com>
|
The setup should be functional and complete. There's a handful of failing tests that I'll fix up tomorrow, and H3 still actually needs to be tested to verify it works when enabled. |
RyanTheOptimist
left a comment
There was a problem hiding this comment.
Nice! Thanks for doing this. One question, but LGTM. (Well, once the tests are passing of course :>)
| cluster = H2Cluster; | ||
| // NOTE: This cluster will attempt to negotiate H3, but defaults to ALPN over TCP. | ||
| } else if (value == "http3") { | ||
| cluster = H3Cluster; |
There was a problem hiding this comment.
Do we plan to eliminate the need to set http/3 explicitly on a per-request basis, eventually?
There was a problem hiding this comment.
Yes, but right now the configuration required for that is complicated by legacy handling of what essentially should be considered "routing" here in the Http::Client. Once we move fully to using the route table in configuration, it will be much easier to set that up.
I went with this approach both to simplify and limit the scope of this PR, and because I figured at any rate it provides an extra safety guard around a currently "experimental" feature (at least in the sense that we haven't extensively tested it in this library yet).
|
This is causing hangs/crashes in our Lyft apps so I'm reverting this while I continue to investigate. Here's the crash backtrace I'm seeing on iOS (not very helpful unfortunately): |
…ngineBuilder (#2163)" (#2186)" (#2190) Description: This reverts commit b08883b. We were able to confirm the crash we saw with our integration was specific to our integration and not to the public implementation. Risk Level: Low Testing: Manual & CI Signed-off-by: Mike Schore <mike.schore@gmail.com>
|
Awesome! So exciting to see this land. Is there somewhere I can doc it up after the fact, or do we think that we're switching to removing header based routing soon enough it's fine as is? |
|
oh less awesome to see this reverted, heh missed that. maybe can get gocs when we re-land? |
|
@alyssawilk The revert was reverted, this is on main. :) |
|
Re-landed in #2190 btw, we determined that the issues we were seeing in Lyft integrations were caused downstream. |
|
haha, lost track of the reverts. back to excited then :-) |
Description: Adds experimental support for negotiating H3/QUIC connections. To enable this,
enableHttp3must be set to true on the EngineBuilder AND the header "x-envoy-mobile-upstream-protocol" must be set to "http3" on the request. If the upstream does not support H3, the standard ALPN over TCP configuration will still be used by default.Risk Level: Moderate
Testing: Updated Unit Coverage
Co-authored-by: Alyssa Wilk alyssar@chromium.org
Signed-off-by: Mike Schore mike.schore@gmail.com