[SERVER-58986] System exceptions can reach noexcept code in the command execution path Created: 30/Jul/21 Updated: 24/May/23 |
|
| Status: | Backlog |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | George Wangensteen | Assignee: | Backlog - Service Architecture |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | sa-remove-fv-backlog-22 | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Assigned Teams: |
Service Arch
|
||||||||
| Operating System: | ALL | ||||||||
| Backport Requested: |
v5.0
|
||||||||
| Sprint: | Service Arch Prioritized List | ||||||||
| Participants: | |||||||||
| Linked BF Score: | 15 | ||||||||
| Description |
|
Commands are invoked as continuations chained via the "thenWithState" future utility; see here. "thenWithState" is noexcept annotated, and invokes the provided continuation inline via makeReadyFutureWith; see here. makeReadyFutureWith catches any DBExceptions thrown by the continuation and converts them to Statuses; see here, but does not catch other (i.e. system/std) exceptions. That means if a non-db exception (i.e. from an STL container or type) is thrown and uncaught anywhere in the command execution process, during stack unwinding it could bubble up to the noexcept-annotated thenWithState, which will result in process termination with minimal diagnostics available.
Acceptance criteria: Investigate how we want to solve this and bring a proposal back to the team. |