-
Type:
Improvement
-
Resolution: Declined
-
Priority:
Unknown
-
None
-
Component/s: Backpressure, SDAM
-
None
Summary
The client backpressure spec adds SystemOverloadedError and RetryableError labels to errors during connection establishment. The SDAM spec requires that errors with these labels must not trigger pool clearing or server description updates to Unknown.
But existing unified spec tests only cover the application connection path (using appName for filtering failPoints for insertMany command). There are no tests verifying this behaviour for the server monitor's connection establishment path.
The monitor has a distinct error flow: when its existing connection is broken, it creates a new connection via the same establishment path that adds backpressure labels. Without test coverage, drivers may implement SystemOverloadError check for application errors but miss the monitor path entirely - as was discovered in the Go driver during PR review.
It seems that it can not be done with unified spec test because failpoints can not distinguish monitor connections from application connections, and timing control over monitor connection lifecycle varies.
Motivation
Who is the affected end user?
Who are the stakeholders?
How does this affect the end user?
Are they blocked? Are they annoyed? Are they confused?
How likely is it that this problem or use case will occur?
Main path? Edge case?
If the problem does occur, what are the consequences and how severe are they?
Minor annoyance at a log message? Performance concern? Outage/unavailability? Failover can't complete?
Is this issue urgent?
Does this ticket have a required timeline? What is it?
Is this ticket required by a downstream team?
Needed by e.g. Atlas, Shell, Compass?
Is this ticket only for tests?
Does this ticket have any functional impact, or is it just test improvements?
Acceptance Criteria
Add a prose test to the SDAM that verifies, when the server monitor creates a new connection and encounters a backpressure-eligible network error during connection establishment, the driver must not clear the connection pool and must not mark the server Unknown.