[SERVER-43622] ShardingReplicaSetChangeListener::onConfirmedSet should not make blocking calls inside executor Created: 25/Sep/19 Updated: 12/Dec/23 |
|
| Status: | Backlog |
| Project: | Core Server |
| Component/s: | Sharding |
| Affects Version/s: | 4.2.0 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Randolph Tan | Assignee: | Backlog - Cluster Scalability |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | sharding-common-backlog | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Assigned Teams: |
Cluster Scalability
|
||||||||
| Participants: | |||||||||
| Story Points: | 3 | ||||||||
| Description |
|
The issue is that the callback is running in the fixed executor and then also tries doing a blocking call inside the fixed executor here. So in an environment where number of worker threads <= number of shards, then the change callback for different replica sets happened roughly at the same time, all of them will be blocked waiting for a worker thread to be available (which are none, since all of them are waiting for the same thing) |