[SERVER-49435] uassert in NetworkInterfaceTL::setTimer can cause server to crash if connection future not immediately ready Created: 10/Jul/20 Updated: 29/Oct/23 Resolved: 23/Jun/21 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Networking |
| Affects Version/s: | None |
| Fix Version/s: | 5.0.0-rc4, 4.4.9, 5.1.0-rc0 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Janna Golden | Assignee: | George Wangensteen |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | post-rc0, 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
|
||||||||||||||||||||
| Sprint: | Service arch 2020-11-30, Service Arch 2021-05-17, Service Arch 2021-05-31, Service Arch 2021-06-14, Service Arch 2021-06-28 | ||||||||||||||||||||
| Participants: | |||||||||||||||||||||
| Case: | (copied to CRM) | ||||||||||||||||||||
| Linked BF Score: | 37 | ||||||||||||||||||||
| Story Points: | 5 | ||||||||||||||||||||
| Description |
|
We can throw NetworkInterfaceExceededTimeLimit in NetworkInterfaceTL::CommandStateBase::setTimer() if the connection future is not immediately ready This is a problem in both the exhaust and non-exhaust paths - if the connection future isn't immediately ready we call 'trySend()' in a getAsync continuation call that runs on the reactor (here in the non-exhaust case and here in the exhaust case). I had previously tried to catch this error in the exhaust case in
Acceptance criteria: Write a repro. |
| Comments |
| Comment by Githook User [ 05/Aug/21 ] | ||||||||||||
|
Author: {'name': 'George Wangensteen', 'email': 'george.wangensteen@mongodb.com', 'username': 'gewa24'}Message: (cherry picked from commit 32d4d90cb12b46a57101b5de4e9ba08b5ab50c9e) | ||||||||||||
| Comment by Githook User [ 23/Jun/21 ] | ||||||||||||
|
Author: {'name': 'George Wangensteen', 'email': 'george.wangensteen@mongodb.com', 'username': 'gewa24'}Message: (cherry picked from commit 32d4d90cb12b46a57101b5de4e9ba08b5ab50c9e) | ||||||||||||
| Comment by Githook User [ 23/Jun/21 ] | ||||||||||||
|
Author: {'name': 'George Wangensteen', 'email': 'george.wangensteen@mongodb.com', 'username': 'gewa24'}Message: | ||||||||||||
| Comment by George Wangensteen [ 13/May/21 ] | ||||||||||||
|
Revert of | ||||||||||||
| Comment by Amirsaman Memaripour [ 21/Apr/21 ] | ||||||||||||
|
I did some investigation and reproduced this for the exhaust path. For non-exhaust requests, however, the process of creating the future-continuation is capable of handling exceptions (see below), so this is not an issue for non-exhaust commands.
|