[SERVER-53887] whenAny/whenAll/whenAllSucceed never fulfill returned future if input executor is already shut down Created: 19/Jan/21 Updated: 06/Dec/22 |
|
| Status: | Backlog |
| Project: | Core Server |
| Component/s: | Internal Code |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Matthew Saltz (Inactive) | 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 | ||
| Assigned Teams: |
Service Arch
|
| Operating System: | ALL |
| Participants: | |
| Story Points: | 4 |
| Description |
|
For these helper functions, if the input futures are ExecutorFutures but their executor is shut down, the callback inside getAsync won't run, meaning that their returned future will never be resolved, possibly leading to hangs. This can be fixed by using unsafeToInlineFuture before calling .getAsync, since the getAsync is only doing minor work like signaling atomics and setting a promise. |