diff options
Diffstat (limited to 'src/mongo')
-rw-r--r-- | src/mongo/db/repl/SConscript | 1 | ||||
-rw-r--r-- | src/mongo/db/repl/local_oplog_info.cpp | 4 | ||||
-rw-r--r-- | src/mongo/db/repl/replication_recovery.cpp | 3 |
3 files changed, 7 insertions, 1 deletions
diff --git a/src/mongo/db/repl/SConscript b/src/mongo/db/repl/SConscript index 4b9526e735e..14ec068392b 100644 --- a/src/mongo/db/repl/SConscript +++ b/src/mongo/db/repl/SConscript @@ -25,6 +25,7 @@ env.Library( 'repl_coordinator_interface', '$BUILD_DIR/mongo/db/logical_clock', '$BUILD_DIR/mongo/db/logical_time', + '$BUILD_DIR/mongo/db/mongod_options', '$BUILD_DIR/mongo/db/storage/flow_control', ], ) diff --git a/src/mongo/db/repl/local_oplog_info.cpp b/src/mongo/db/repl/local_oplog_info.cpp index f6573c6a5f8..2b5ed06bab5 100644 --- a/src/mongo/db/repl/local_oplog_info.cpp +++ b/src/mongo/db/repl/local_oplog_info.cpp @@ -35,6 +35,7 @@ #include "mongo/db/logical_clock.h" #include "mongo/db/logical_time.h" +#include "mongo/db/mongod_options_storage_gen.h" #include "mongo/db/repl/replication_coordinator.h" #include "mongo/db/storage/flow_control.h" #include "mongo/db/storage/record_store.h" @@ -74,7 +75,8 @@ void LocalOplogInfo::setOplogCollectionName(ServiceContext* service) { _oplogName = NamespaceString::kRsOplogNamespace; break; case ReplicationCoordinator::modeNone: - if (ReplSettings::shouldRecoverFromOplogAsStandalone()) { + if (ReplSettings::shouldRecoverFromOplogAsStandalone() || + (storageGlobalParams.readOnly && !recoverToOplogTimestamp.empty())) { _oplogName = NamespaceString::kRsOplogNamespace; } // leave empty otherwise. diff --git a/src/mongo/db/repl/replication_recovery.cpp b/src/mongo/db/repl/replication_recovery.cpp index 29f0717fc98..b1dc2e86946 100644 --- a/src/mongo/db/repl/replication_recovery.cpp +++ b/src/mongo/db/repl/replication_recovery.cpp @@ -359,6 +359,9 @@ void ReplicationRecoveryImpl::recoverFromOplogUpTo(OperationContext* opCtx, Time "Cannot use 'recoverToOplogTimestamp' without a stable checkpoint"); } + // Initialize the cached pointer to the oplog collection. + acquireOplogCollectionForLogging(opCtx); + // This may take an IS lock on the oplog collection. _truncateOplogIfNeededAndThenClearOplogTruncateAfterPoint(opCtx, recoveryTS); |