[SERVER-37156] benchRun should wait for the worker threads it spawns to exit Created: 15/Sep/18 Updated: 29/Oct/23 Resolved: 17/Sep/18 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Performance |
| Affects Version/s: | None |
| Fix Version/s: | 4.0.3, 4.1.4 |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Max Hirschhorn | Assignee: | Max Hirschhorn |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||
| Backport Requested: |
v4.0
|
||||||||
| Sprint: | TIG 2018-09-24 | ||||||||
| Participants: | |||||||||
| Linked BF Score: | 26 | ||||||||
| Description |
|
benchRun() calls .detach() on the worker threads it spawns. This means that despite calling _brState.waitForState(BenchRunState::BRS_FINISHED) to wait for the worker threads to not be considered "active", it doesn't wait for the worker threads to actually be destructed. There is then a race in mongoebench where the destructor for the thread_local ServiceContext::UniqueClient currentClient may not have run by the point embedded::shutdown() is called. Having benchRun() explicitly .join() the worker threads it spawns would fix this race.
|
| Comments |
| Comment by Githook User [ 22/Sep/18 ] |
|
Author: {'name': 'Max Hirschhorn', 'email': 'max.hirschhorn@mongodb.com', 'username': 'visemet'}Message: (cherry picked from commit 12dba1e5b8c5ec7532da1bfa2e05c56f021d7f06) |
| Comment by Githook User [ 17/Sep/18 ] |
|
Author: {'name': 'Max Hirschhorn', 'email': 'max.hirschhorn@mongodb.com', 'username': 'visemet'}Message: |