-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Internal Code
-
None
-
Fully Compatible
-
ALL
-
Platforms 2018-08-13
In ServiceContextMongoDTest::ServiceContextMongoDTest(), it puts a unittest::TempDir on the stack. This seems unintentional, as the code immediately removes the temporary directory when the constructor finishes.
The code still "works" on Linux because the storage engine has already opened all the files it needs by that point, so it never notices the directory got deleted.
On Windows, the tests are working because the removal of the temp directory fails, since there are still open files in the directory. This results in any unit test utilizing ServiceContextMongoDTest on Windows to have their logs filled with copious warnings:
[cpp_unit_test:lock_manager_test] 2018-07-27T07:26:08.819+0000 Starting C++ unit test build\cached\mongo\db\concurrency\lock_manager_test.exe... ... [cpp_unit_test:lock_manager_test] 2018-07-27T07:26:09.701+0000 2018-07-27T07:26:09.702+0000 W - [main] error encountered recursively deleting directory 'C:\data\tmp\service_context_d_test_fixture-a59a-a817-07f1-c6e4': boost::filesystem::remove: The process cannot access the file because it is being used by another process: "C:\data\tmp\service_context_d_test_fixture-a59a-a817-07f1-c6e4\mongod.lock". Ignoring and continuing. ...
(And I believe the test ends up littering the Windows test machines with many temp directories.)
- is caused by
-
SERVER-34798 Replace subclasses of ServiceContext with decorations and flexible initialization code
- Closed