-
Notifications
You must be signed in to change notification settings - Fork 84
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
Cronvoy: map Envoy Mobile internal errors to Cronet internal errors #1550
Comments
@DavidSchinazi when you're back, this feels like a space where I (who know Envoy errors) could collaborate with Renjie (who knows Chrome ones) to do a mapping of sorts? |
@alyssawilk that sounds great. Though in this case I'm surprised that Envoy treats a TCP RST as an internal error? |
I suspect that's an artifact of the old error pathways that @goaway has mentioned. Upstream reset should be communicated with the UpstreamRemoteReset flag is set and EarlyUpstreamReset/LateUpstreamReset details, which can be converted into the relevant Chrome error |
Is there an action item for Cronvoy to set that flag, or will Envoy Mobile do it by default? |
Personally, I would expect Envoy Mobile to provide a fined grained error scheme. ERR_CONNECTION_REFUSED is not the only one here - there are 235 of them. This is how chromium//net splits the error domain:
|
But there is somewhere a good news. It is understood that those internal errors are subject to changes, and performing business logic against those is "at your own risks". So we don't need to have the same 235 errors, that's for sure. On the other hand, I guess that for some of these errors, it would be damning if Cronvoy would not return the same error. Here, Envoy Mobile can have its own scheme, and Cronvoy will give them a Cronet "look". |
More details were added to the description of the issue. |
Cronet exposes 235 internal errors split in 9 categories. Cronet internal error codes are not guaranteed to be stable. However, some of those internal error codes are mapped to the public error code scheme, others are driving some business logic, and couples are used for tests only - having these properly mapped with Envoy Mobile internal error codes will likely avoid regressions. Following error codes should be considered:
NAME_NOT_RESOLVED
- mapped to public error codeINTERNET_DISCONNECTED
- mapped to public error codeNETWORK_CHANGED
- mapped to public error codeTIMED_OUT
- mapped to public error codeCONNECTION_CLOSED
- mapped to public error codeCONNECTION_TIMED_OUT
- mapped to public error codeCONNECTION_REFUSED
- mapped to public error codeCONNECTION_RESET
- mapped to public error codeADDRESS_UNREACHABLE
- mapped to public error codeQUIC_PROTOCOL_ERROR
- mapped to public error codeCONTENT_LENGTH_MISMATCH
- testingHTTP2_PING_FAILED
- business logicQUIC_HANDSHAKE_FAILED
- business logicSSL_PINNED_KEY_NOT_IN_CERT_CHAIN
- testingDISALLOWED_URL_SCHEME
- testingEnvoy Mobile does expose an internal error code, but will likely require more work:
'x-internal-error-code', '0'
, and the error message is an empty String.The text was updated successfully, but these errors were encountered: