[SERVER-78632] Exception in QuerySettingsManager lock acquisition triggers server crash Created: 03/Jul/23 Updated: 29/Oct/23 Resolved: 13/Jul/23 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 7.1.0-rc0 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Ian Boros | Assignee: | Denis Grebennicov |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||
| Assigned Teams: |
Query Execution
|
||||||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||||||
| Operating System: | ALL | ||||||||||||||||||||
| Sprint: | QE 2023-07-24 | ||||||||||||||||||||
| Participants: | |||||||||||||||||||||
| Linked BF Score: | 130 | ||||||||||||||||||||
| Description |
|
This lock acquisition may throw. Furthermore, this function is called from the ClusterServerParameterRefresher thread, which does not seem to catch DBExceptions. When the lock acquisition does throw, (e.g. an unfortunately timed shutdown), std::terminate() is called crashing the entire server. The only manifestation of this issue in our testing has been shutdown, but it may be possible to trip this in other ways. |
| Comments |
| Comment by Githook User [ 13/Jul/23 ] |
|
Author: {'name': 'Denis Grebennicov', 'email': 'denis.grebennicov@mongodb.com', 'username': 'denis631'}Message: |
| Comment by Ian Boros [ 03/Jul/23 ] |
|
It's not clear to me whether this should be dealt with per-parameter, or if the refreshing code should have a generic way to handle exceptions on this path. I've tried to phrase the ticket in a way that doesn't imply one way or the other (or neither) is the correct solution. |