-
Type:
Improvement
-
Resolution: Works as Designed
-
Priority:
Unknown
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
None
-
Go Drivers
-
None
-
None
-
None
-
None
-
None
-
None
Context
GODRIVER-3646 adds the "SystemOverloadedError" label for all but a few errors that happen during handshake. When handling handshake errors with that label, the Go Driver doesn't clear the connection pool. The SDAM spec pseudocode says that drivers shouldn't clear the connection pool for any network error. However, the list of errors that the Go Driver treats as network errors seems to incorrectly classify DNS errors as non-network errors (see here).
We should audit and update that list of errors that the Go Driver doesn't add the "ServerOverloadedError" label for, to make sure we always label network errors.
Definition of done
- Update wrapConnectionError to add the "SystemOverloadedError" label to DNS network errors.
- It's not clear if all DNS errors should be treated as network errors, or only those with Timeout() == true.
Pitfalls
It's not practical to classify all possible errors as network or non-network. Should we bias more toward classifying more errors as network errors, or more errors as non-network errors? What is the effect of each?
- related to
-
GODRIVER-3646 Avoid clearing the connection pool when the server connection rate limiter triggers
-
- Closed
-