[DRIVERS-746] Drivers should retry operations if connection handshake fails Created: 11/Oct/19 Updated: 12/Dec/22 |
|
| Status: | Implementing |
| Project: | Drivers |
| Component/s: | Retryability |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Jeffrey Yemin | Assignee: | Neal Beeken |
| Resolution: | Unresolved | Votes: | 6 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Driver Changes: | Needed | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Quarter: | FY23Q1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Downstream Changes Summary: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Case: | (copied to CRM) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Engineering Lead: | |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Product Manager: | |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Driver Compliance: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description |
|
This ticket is intended to track the work required to make all drivers resilient to connection handshake network errors with respect to retryable reads and writes. Currently, the retryable reads and retryable writes specifications do not require that operations are retried in the following case:
Instead, the specifications allow drivers to fail the operation without retrying, even though retrying would be safe in this case for both reads and writes. One could read these specifications such that network errors during a connection handshake fall under the definition of retryable error, but the specifications are not explicit that this applies to the handshake and in practice multiple drivers do not interpret it that way, and there are no tests defined to assert the behavior. Similarly, the server selection spec states that
but note it's not a MUST in the specification so in practice drivers differ in the behavior. |
| Comments |
| Comment by Jeremy Mikola [ 31/Aug/22 ] |
|
Updated downstream changes to add missing commit hash. |
| Comment by Githook User [ 23/Feb/22 ] |
|
Author: {'name': 'Neal Beeken', 'email': 'neal.beeken@mongodb.com', 'username': 'nbbeeken'}Message: DRIVERS-746: Make handshake errors retryable (#1115) |
| Comment by Patrick Freed [ 05/Jan/21 ] |
|
Following up the discussion in DRIVERS-1483: this ticket would be really nice for DRIVERS-781, since we now eagerly evict threads from the WaitQueue with an error. Since these threads would not have even attempted connection establishment when they get this error, they certainly could be retried assuming we treat "connection handshake fails" from the title as "connection check out fails". If we could prioritize this such that drivers will implement it before they release any of their DRIVERS-781 changes, that would be great. If that won't be possible, please let me know so I can make the appropriate adjustments for DRIVERS-781, though ideally this could be done all at once. |