summaryrefslogtreecommitdiff
path: root/src/mongo/db/db.cpp
diff options
context:
space:
mode:
authorA. Jesse Jiryu Davis <jesse@mongodb.com>2019-03-07 17:11:12 -0500
committerA. Jesse Jiryu Davis <jesse@mongodb.com>2019-03-21 21:22:24 -0400
commit78eaa3cf538764d5aa5a09c5997532a4c3b2bca8 (patch)
tree1b5fcc32ad4b9cc2369b9fcc7ae95be2b09da3f7 /src/mongo/db/db.cpp
parent9fa4a356cc1d89adc1edd4321117503ce90e2d4b (diff)
downloadmongo-78eaa3cf538764d5aa5a09c5997532a4c3b2bca8.tar.gz
SERVER-39679 Get oldest transaction time when snapshotting
Diffstat (limited to 'src/mongo/db/db.cpp')
-rw-r--r--src/mongo/db/db.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/mongo/db/db.cpp b/src/mongo/db/db.cpp
index a3dc258684c..5df53cc0ef3 100644
--- a/src/mongo/db/db.cpp
+++ b/src/mongo/db/db.cpp
@@ -132,6 +132,7 @@
#include "mongo/db/storage/storage_engine_lock_file.h"
#include "mongo/db/storage/storage_options.h"
#include "mongo/db/system_index.h"
+#include "mongo/db/transaction_participant.h"
#include "mongo/db/ttl.h"
#include "mongo/db/wire_version.h"
#include "mongo/executor/network_connection_hook.h"
@@ -522,9 +523,16 @@ ExitCode _initAndListen(int listenPort) {
startFreeMonitoring(serviceContext);
+ auto replCoord = repl::ReplicationCoordinator::get(startupOpCtx.get());
+ invariant(replCoord);
+ if (replCoord->isReplEnabled()) {
+ storageEngine->setOldestActiveTransactionTimestampCallback(
+ TransactionParticipant::getOldestActiveTimestamp);
+ }
+
if (serverGlobalParams.clusterRole == ClusterRole::ShardServer) {
// Note: For replica sets, ShardingStateRecovery happens on transition to primary.
- if (!repl::ReplicationCoordinator::get(startupOpCtx.get())->isReplEnabled()) {
+ if (!replCoord->isReplEnabled()) {
if (ShardingState::get(startupOpCtx.get())->enabled()) {
uassertStatusOK(ShardingStateRecovery::recover(startupOpCtx.get()));
}
@@ -553,7 +561,7 @@ ExitCode _initAndListen(int listenPort) {
stdx::make_unique<LogicalTimeValidator>(keyManager));
}
- repl::ReplicationCoordinator::get(startupOpCtx.get())->startup(startupOpCtx.get());
+ replCoord->startup(startupOpCtx.get());
if (getReplSetMemberInStandaloneMode(serviceContext)) {
log() << startupWarningsLog;
log() << "** WARNING: mongod started without --replSet yet document(s) are present in "