[SERVER-61016] Swallow connection reset-related errors received during ASIOSession creation on outbound connection. Created: 26/Oct/21 Updated: 29/Oct/23 Resolved: 11/Nov/21 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | 5.2.0 |
| Fix Version/s: | 5.2.0, 5.0.7 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Blake Oler | Assignee: | Billy Donahue |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | servicearch-wfbf-day | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||||||||||||||
| Operating System: | ALL | ||||||||||||||||||||||||||||
| Backport Requested: |
v5.0, v4.4
|
||||||||||||||||||||||||||||
| Sprint: | Service Arch 2021-11-01, Service Arch 2021-11-15, Service Arch 2021-11-22 | ||||||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||||||
| Linked BF Score: | 151 | ||||||||||||||||||||||||||||
| Story Points: | 3 | ||||||||||||||||||||||||||||
| Description |
|
Changes were recently made so that asio system errors were thrown directly from the ASIOSession constructor. In making that change, some callers to this constructor aren't prepared to catch that exception type. Example transport_layer_asio.cpp:592. Identified constructor calls: |
| Comments |
| Comment by Githook User [ 18/Mar/22 ] |
|
Author: {'name': 'Billy Donahue', 'email': 'billy.donahue@mongodb.com', 'username': 'BillyDonahue'}Message: (cherry picked from commit fefeb243ee61099626d00e29fee51acc1da44a4b) |
| Comment by Githook User [ 15/Nov/21 ] |
|
Author: {'name': 'Benety Goh', 'email': 'benety@mongodb.com', 'username': 'benety'}Message: |
| Comment by Githook User [ 11/Nov/21 ] |
|
Author: {'name': 'Billy Donahue', 'email': 'billy.donahue@mongodb.com', 'username': 'BillyDonahue'}Message: |
| Comment by Billy Donahue [ 11/Nov/21 ] |
|
FTR, it seems to be only on MacOS that the ASIO socket::set_option fails on peer-reset connections. Linux and Windows allow the option to be set without error. The test for this behavior resets the connection at the connection's remote end, waits a full 1.0 seconds, then calls set_option on the local end and observes any thrown exceptions. |
| Comment by Billy Donahue [ 04/Nov/21 ] |
|
Suggested plan:
|