-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
-
ALL
-
Execution Team 2022-12-12
-
None
-
None
-
None
-
None
-
None
-
None
-
None
The NoOverlapReadSource unit test can fail due to finding a record which should not be visible at the kNoOverlap timestamp.
{"t":{"$date":"2022-11-09T16:52:10.495Z"},"s":"I", "c":"TEST", "id":4680100, "ctx":"main","msg":"FAIL","attr":{"test":"NoOverlapReadSource","type":"TestAssertionFailureException","error":"Expected: !(rs->findRecord(opCtx1, rid3, &unused)) @src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit_test.cpp:265", ...}
This appears to be because in some cases when the test is run, it is not properly configured to timestamp its writes.
Potential fix:
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit_test.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit_test.cpp
index 35e6b0a4302..d6169a6f3a0 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit_test.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit_test.cpp
@@ -30,6 +30,7 @@
#include "mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.h"
#include "mongo/base/checked_cast.h"
+#include "mongo/db/global_settings.h"
#include "mongo/db/repl/repl_settings.h"
#include "mongo/db/repl/replication_coordinator_mock.h"
#include "mongo/db/service_context.h"
@@ -62,10 +63,15 @@ public:
false, // .ephemeral
false // .repair
) {
+ // We need to use a replica set so that writes to replicated collections are not journaled
+ // and thus are also timestamped.
+ repl::ReplSettings replSettings;
+ replSettings.setReplSetString("rs");
+ setGlobalReplSettings(replSettings);
repl::ReplicationCoordinator::set(
getGlobalServiceContext(),
- std::unique_ptr<repl::ReplicationCoordinator>(new repl::ReplicationCoordinatorMock(
- getGlobalServiceContext(), repl::ReplSettings())));
+ std::unique_ptr<repl::ReplicationCoordinator>(
+ new repl::ReplicationCoordinatorMock(getGlobalServiceContext(), replSettings)));
_engine.notifyStartupComplete();
}