[SERVER-36258] Perform construction of ServiceContext after execution of mongo initializers, not during Created: 24/Jul/18 Updated: 29/Oct/23 Resolved: 30/Jul/18 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Internal Code |
| Affects Version/s: | None |
| Fix Version/s: | 4.0.3, 4.1.2 |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Andy Schwerin | Assignee: | Henrik Edin |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Backwards Compatibility: | Fully Compatible |
| Sprint: | Platforms 2018-07-30 |
| Participants: |
| Description |
|
The "global" instance of ServiceContext is currently created by mongo initializers in all processes that link service_context.cpp. However, it's illegal to create threads inside mongo initializers. Also, test cases are supposed to construct their own ServiceContext per test case using the ServiceContextTest fixture or one of its relatives, so having the global one leads to programming errors in tests. This task is to remove the MONGO_INITIALIZER(ServiceContext) and instead manually instantiate the ServiceContext in mongos, mongod, and the embedded library, and then to fix the fallout. |
| Comments |
| Comment by Githook User [ 13/Sep/18 ] |
|
Author: {'name': 'Henrik Edin', 'email': 'henrik.edin@mongodb.com', 'username': 'henrikedin'}Message: This patch does several loosely related and surprisingly hard to separate things. 1.) Make the ServiceContext class final 2.) Create a mechanism, called ConstructorActions, for running methods on 3.) Introduce / improve test fixture base classes for tests, giving them fresh 4.) Make several remaining global variables SC decorations in support of (3) 5.) Replace many MONGO_INITIALIZERS that access getGlobalServiceContext with the 6.) Fix up tests to use the fixtures from (3) and fix tests that silently used 7.) Utilize (2) as necessary to simplify initialization of new ServiceContexts, (cherry picked from commit d520be0814492c262515cf0a5d62a127ace70dce)
(cherry picked from commit 9a68eb0cc65a93233b4ff5746330f9eb77de9b90)
(cherry picked from commit bfe170e49b1dc10b2badde45bc13c057a2f8ab61)
(cherry picked from commit b079e4713d897b5541c2804386025817ec720800)
(cherry picked from commit 4c16f0f336f4db77034e8aa594bbd4a5bac3f40c)
(cherry picked from commit c9d4204b6243e5eee6fe0b5e2c34d02af9ac5edb) |
| Comment by Githook User [ 13/Sep/18 ] |
|
Author: {'name': 'Henrik Edin', 'email': 'henrik.edin@mongodb.com', 'username': 'henrikedin'}Message: (cherry picked from commit 7ba144c6d0e28282e47450634ca5370b270e3207)
(cherry picked from commit f9e131ad70d3103513e777cb2125daa1daae23ec) |
| Comment by Githook User [ 27/Jul/18 ] |
|
Author: {'username': 'amschwerin', 'name': 'Andy Schwerin', 'email': 'schwerin@mongodb.com'}Message: |
| Comment by Githook User [ 27/Jul/18 ] |
|
Author: {'name': 'Henrik Edin', 'email': 'henrik.edin@mongodb.com', 'username': 'henrikedin'}Message: |