summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Wlodarek <gregory.wlodarek@mongodb.com>2019-01-02 10:38:30 -0500
committerGregory Wlodarek <gregory.wlodarek@mongodb.com>2019-01-10 19:08:09 -0500
commitb54951b484b2cba44ffa424f43acb870365e3f12 (patch)
tree419663bda0521d923c1e3d8a26300d7820b1c7a6
parentbc5ac036a39627b9b2637665e7ac38853d049754 (diff)
downloadmongo-b54951b484b2cba44ffa424f43acb870365e3f12.tar.gz
SERVER-38527 Merge supportsRecoverToStableTimestamp into supportsRecoveryTimestamp
-rw-r--r--src/mongo/db/repl/bgsync.cpp2
-rw-r--r--src/mongo/db/repl/replication_consistency_markers_impl.cpp6
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl.cpp2
-rw-r--r--src/mongo/db/repl/replication_recovery_test.cpp25
-rw-r--r--src/mongo/db/repl/rollback_test_fixture.h4
-rw-r--r--src/mongo/db/repl/rs_rollback.cpp7
-rw-r--r--src/mongo/db/repl/storage_interface.h9
-rw-r--r--src/mongo/db/repl/storage_interface_impl.cpp6
-rw-r--r--src/mongo/db/repl/storage_interface_impl.h2
-rw-r--r--src/mongo/db/repl/storage_interface_mock.h4
-rw-r--r--src/mongo/db/storage/kv/kv_engine.h7
-rw-r--r--src/mongo/db/storage/kv/kv_storage_engine.cpp6
-rw-r--r--src/mongo/db/storage/kv/kv_storage_engine.h2
-rw-r--r--src/mongo/db/storage/storage_engine.h23
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp26
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h2
16 files changed, 29 insertions, 104 deletions
diff --git a/src/mongo/db/repl/bgsync.cpp b/src/mongo/db/repl/bgsync.cpp
index 56b548f5a12..7fff33e3aee 100644
--- a/src/mongo/db/repl/bgsync.cpp
+++ b/src/mongo/db/repl/bgsync.cpp
@@ -629,7 +629,7 @@ void BackgroundSync::_runRollback(OperationContext* opCtx,
storageInterface->waitForAllEarlierOplogWritesToBeVisible(opCtx);
auto storageEngine = opCtx->getServiceContext()->getStorageEngine();
- if (!forceRollbackViaRefetch.load() && storageEngine->supportsRecoverToStableTimestamp()) {
+ if (!forceRollbackViaRefetch.load() && storageEngine->supportsReadConcernMajority()) {
log() << "Rollback using 'recoverToStableTimestamp' method.";
_runRollbackViaRecoverToCheckpoint(
opCtx, source, &localOplog, storageInterface, getConnection);
diff --git a/src/mongo/db/repl/replication_consistency_markers_impl.cpp b/src/mongo/db/repl/replication_consistency_markers_impl.cpp
index eee665bf67d..0d1f13e4dc7 100644
--- a/src/mongo/db/repl/replication_consistency_markers_impl.cpp
+++ b/src/mongo/db/repl/replication_consistency_markers_impl.cpp
@@ -196,9 +196,9 @@ void ReplicationConsistencyMarkersImpl::setMinValid(OperationContext* opCtx,
<< MinValidDocument::kMinValidTermFieldName
<< minValid.getTerm()));
- // This method is only used with storage engines that do not support recover to stable
- // timestamp. As a result, their timestamps do not matter.
- invariant(!opCtx->getServiceContext()->getStorageEngine()->supportsRecoverToStableTimestamp());
+ // This method is only used when read concern majority is set to off, as the storage engine
+ // doesn't support recover to stable timestamp. As a result, their timestamps do not matter.
+ invariant(!opCtx->getServiceContext()->getStorageEngine()->supportsReadConcernMajority());
update.timestamp = Timestamp();
_updateMinValidDocument(opCtx, update);
diff --git a/src/mongo/db/repl/replication_coordinator_impl.cpp b/src/mongo/db/repl/replication_coordinator_impl.cpp
index e6753e65d39..5cf9d75ea6a 100644
--- a/src/mongo/db/repl/replication_coordinator_impl.cpp
+++ b/src/mongo/db/repl/replication_coordinator_impl.cpp
@@ -770,7 +770,7 @@ void ReplicationCoordinatorImpl::_startDataReplication(OperationContext* opCtx,
void ReplicationCoordinatorImpl::startup(OperationContext* opCtx) {
if (!isReplEnabled()) {
if (ReplSettings::shouldRecoverFromOplogAsStandalone()) {
- if (!_storage->supportsRecoverToStableTimestamp(opCtx->getServiceContext())) {
+ if (!_storage->supportsRecoveryTimestamp(opCtx->getServiceContext())) {
severe() << "Cannot use 'recoverFromOplogAsStandalone' with a storage engine that "
"does not support recover to stable timestamp.";
fassertFailedNoTrace(50805);
diff --git a/src/mongo/db/repl/replication_recovery_test.cpp b/src/mongo/db/repl/replication_recovery_test.cpp
index 569b76d0a17..518d0a318bc 100644
--- a/src/mongo/db/repl/replication_recovery_test.cpp
+++ b/src/mongo/db/repl/replication_recovery_test.cpp
@@ -72,16 +72,6 @@ public:
_recoveryTimestamp = recoveryTimestamp;
}
- bool supportsRecoverToStableTimestamp(ServiceContext* serviceCtx) const override {
- stdx::lock_guard<stdx::mutex> lock(_mutex);
- return _supportsRecoverToStableTimestamp;
- }
-
- void setSupportsRecoverToStableTimestamp(bool supports) {
- stdx::lock_guard<stdx::mutex> lock(_mutex);
- _supportsRecoverToStableTimestamp = supports;
- }
-
bool supportsRecoveryTimestamp(ServiceContext* serviceCtx) const override {
stdx::lock_guard<stdx::mutex> lock(_mutex);
return _supportsRecoveryTimestamp;
@@ -107,7 +97,6 @@ private:
Timestamp _initialDataTimestamp = Timestamp::min();
boost::optional<Timestamp> _recoveryTimestamp = boost::none;
Timestamp _pointInTimeReadTimestamp = {};
- bool _supportsRecoverToStableTimestamp = true;
bool _supportsRecoveryTimestamp = true;
};
@@ -555,14 +544,14 @@ void ReplicationRecoveryTest::testRecoveryAppliesDocumentsWhenAppliedThroughIsBe
}
TEST_F(ReplicationRecoveryTest, RecoveryAppliesDocumentsWhenAppliedThroughIsBehind) {
- getStorageInterfaceRecovery()->setSupportsRecoverToStableTimestamp(true);
+ getStorageInterfaceRecovery()->setSupportsRecoveryTimestamp(true);
bool hasStableTimestamp = false;
bool hasStableCheckpoint = false;
testRecoveryAppliesDocumentsWhenAppliedThroughIsBehind(hasStableTimestamp, hasStableCheckpoint);
}
TEST_F(ReplicationRecoveryTest, RecoveryAppliesDocumentsWhenAppliedThroughIsBehindNoRTT) {
- getStorageInterfaceRecovery()->setSupportsRecoverToStableTimestamp(false);
+ getStorageInterfaceRecovery()->setSupportsRecoveryTimestamp(false);
bool hasStableTimestamp = false;
bool hasStableCheckpoint = false;
testRecoveryAppliesDocumentsWhenAppliedThroughIsBehind(hasStableTimestamp, hasStableCheckpoint);
@@ -898,7 +887,7 @@ TEST_F(ReplicationRecoveryTest, PrepareTransactionOplogEntryCorrectlyUpdatesConf
const auto appliedThrough = OpTime(Timestamp(1, 1), 1);
getStorageInterfaceRecovery()->setPointInTimeReadTimestamp(Timestamp(1, 0));
- getStorageInterfaceRecovery()->setSupportsRecoverToStableTimestamp(true);
+ getStorageInterfaceRecovery()->setSupportsRecoveryTimestamp(true);
getStorageInterfaceRecovery()->setRecoveryTimestamp(appliedThrough.getTimestamp());
getConsistencyMarkers()->setAppliedThrough(opCtx, appliedThrough);
_setUpOplog(opCtx, getStorageInterface(), {1});
@@ -946,7 +935,7 @@ TEST_F(ReplicationRecoveryTest, AbortTransactionOplogEntryCorrectlyUpdatesConfig
auto opCtx = getOperationContext();
const auto appliedThrough = OpTime(Timestamp(1, 1), 1);
- getStorageInterfaceRecovery()->setSupportsRecoverToStableTimestamp(true);
+ getStorageInterfaceRecovery()->setSupportsRecoveryTimestamp(true);
getStorageInterfaceRecovery()->setRecoveryTimestamp(appliedThrough.getTimestamp());
getConsistencyMarkers()->setAppliedThrough(opCtx, appliedThrough);
_setUpOplog(opCtx, getStorageInterface(), {1});
@@ -1009,7 +998,7 @@ DEATH_TEST_F(ReplicationRecoveryTest,
auto opCtx = getOperationContext();
const auto appliedThrough = OpTime(Timestamp(1, 1), 1);
- getStorageInterfaceRecovery()->setSupportsRecoverToStableTimestamp(true);
+ getStorageInterfaceRecovery()->setSupportsRecoveryTimestamp(true);
getStorageInterfaceRecovery()->setRecoveryTimestamp(appliedThrough.getTimestamp());
getConsistencyMarkers()->setAppliedThrough(opCtx, appliedThrough);
_setUpOplog(opCtx, getStorageInterface(), {1});
@@ -1043,7 +1032,7 @@ TEST_F(ReplicationRecoveryTest, CommitTransactionOplogEntryCorrectlyUpdatesConfi
auto opCtx = getOperationContext();
const auto appliedThrough = OpTime(Timestamp(1, 1), 1);
- getStorageInterfaceRecovery()->setSupportsRecoverToStableTimestamp(true);
+ getStorageInterfaceRecovery()->setSupportsRecoveryTimestamp(true);
getStorageInterfaceRecovery()->setRecoveryTimestamp(appliedThrough.getTimestamp());
getConsistencyMarkers()->setAppliedThrough(opCtx, appliedThrough);
_setUpOplog(opCtx, getStorageInterface(), {1});
@@ -1120,7 +1109,7 @@ TEST_F(ReplicationRecoveryTest,
// when updating the transactions table during startup recovery when the table already reflects
// the committed transaction.
const auto appliedThrough = OpTime(Timestamp(2, 2), 1);
- getStorageInterfaceRecovery()->setSupportsRecoverToStableTimestamp(true);
+ getStorageInterfaceRecovery()->setSupportsRecoveryTimestamp(true);
getStorageInterfaceRecovery()->setRecoveryTimestamp(appliedThrough.getTimestamp());
getConsistencyMarkers()->setAppliedThrough(opCtx, appliedThrough);
_setUpOplog(opCtx, getStorageInterface(), {1});
diff --git a/src/mongo/db/repl/rollback_test_fixture.h b/src/mongo/db/repl/rollback_test_fixture.h
index f9e978a19e6..80e0e12761b 100644
--- a/src/mongo/db/repl/rollback_test_fixture.h
+++ b/src/mongo/db/repl/rollback_test_fixture.h
@@ -139,10 +139,6 @@ public:
}
}
- bool supportsRecoverToStableTimestamp(ServiceContext* serviceCtx) const override {
- return true;
- }
-
bool supportsRecoveryTimestamp(ServiceContext* serviceCtx) const override {
return true;
}
diff --git a/src/mongo/db/repl/rs_rollback.cpp b/src/mongo/db/repl/rs_rollback.cpp
index cc060b1f82c..eae4a7b87cb 100644
--- a/src/mongo/db/repl/rs_rollback.cpp
+++ b/src/mongo/db/repl/rs_rollback.cpp
@@ -614,9 +614,10 @@ void checkRbidAndUpdateMinValid(OperationContext* opCtx,
OpTime minValid = fassert(40492, OpTime::parseFromOplogEntry(newMinValidDoc));
log() << "Setting minvalid to " << minValid;
- // This method is only used with storage engines that do not support recover to stable
- // timestamp. As a result, the timestamp on the 'appliedThrough' update does not matter.
- invariant(!opCtx->getServiceContext()->getStorageEngine()->supportsRecoverToStableTimestamp());
+ // This method is only used when read concern majority is set to off, as the storage engine
+ // doesn't support recover to stable timestamp. As a result, the timestamp on the
+ // 'appliedThrough' update does not matter.
+ invariant(!opCtx->getServiceContext()->getStorageEngine()->supportsReadConcernMajority());
replicationProcess->getConsistencyMarkers()->clearAppliedThrough(opCtx, {});
replicationProcess->getConsistencyMarkers()->setMinValid(opCtx, minValid);
diff --git a/src/mongo/db/repl/storage_interface.h b/src/mongo/db/repl/storage_interface.h
index 3e3b47cd098..fc092e4c0d3 100644
--- a/src/mongo/db/repl/storage_interface.h
+++ b/src/mongo/db/repl/storage_interface.h
@@ -371,11 +371,6 @@ public:
virtual StatusWith<Timestamp> recoverToStableTimestamp(OperationContext* opCtx) = 0;
/**
- * Returns whether the storage engine supports "recover to stable timestamp".
- */
- virtual bool supportsRecoverToStableTimestamp(ServiceContext* serviceCtx) const = 0;
-
- /**
* Returns whether the storage engine can provide a recovery timestamp.
*/
virtual bool supportsRecoveryTimestamp(ServiceContext* serviceCtx) const = 0;
@@ -434,7 +429,7 @@ public:
*
* Returns `Timestamp::min()` if no stable recovery timestamp has yet been established.
* Replication recoverable rollback may not succeed before establishment, and restart will
- * require resync. Returns boost::none if `supportsRecoverToStableTimestamp` returns false.
+ * require resync. Returns boost::none if `supportsRecoveryTimestamp` returns false.
*/
virtual boost::optional<Timestamp> getLastStableRecoveryTimestamp(
ServiceContext* serviceCtx) const = 0;
@@ -444,7 +439,7 @@ public:
*
* Returns a timestamp that is guaranteed to be persisted on disk in a checkpoint. Returns
* `Timestamp::min()` if no stable checkpoint has been taken. Returns boost::none if
- * `supportsRecoverToStableTimestamp` returns false or if this is not a persisted data engine.
+ * `supportsRecoveryTimestamp` returns false or if this is not a persisted data engine.
*
* TODO: delete this in v4.4 (SERVER-36194).
*/
diff --git a/src/mongo/db/repl/storage_interface_impl.cpp b/src/mongo/db/repl/storage_interface_impl.cpp
index ac224b641f8..f0b0ecbf467 100644
--- a/src/mongo/db/repl/storage_interface_impl.cpp
+++ b/src/mongo/db/repl/storage_interface_impl.cpp
@@ -1083,10 +1083,6 @@ StatusWith<Timestamp> StorageInterfaceImpl::recoverToStableTimestamp(OperationCo
return opCtx->getServiceContext()->getStorageEngine()->recoverToStableTimestamp(opCtx);
}
-bool StorageInterfaceImpl::supportsRecoverToStableTimestamp(ServiceContext* serviceCtx) const {
- return serviceCtx->getStorageEngine()->supportsRecoverToStableTimestamp();
-}
-
bool StorageInterfaceImpl::supportsRecoveryTimestamp(ServiceContext* serviceCtx) const {
return serviceCtx->getStorageEngine()->supportsRecoveryTimestamp();
}
@@ -1184,7 +1180,7 @@ void StorageInterfaceImpl::oplogDiskLocRegister(OperationContext* opCtx,
boost::optional<Timestamp> StorageInterfaceImpl::getLastStableRecoveryTimestamp(
ServiceContext* serviceCtx) const {
- if (!supportsRecoverToStableTimestamp(serviceCtx)) {
+ if (!supportsRecoveryTimestamp(serviceCtx)) {
return boost::none;
}
diff --git a/src/mongo/db/repl/storage_interface_impl.h b/src/mongo/db/repl/storage_interface_impl.h
index a722b053d48..d0c1a4d754d 100644
--- a/src/mongo/db/repl/storage_interface_impl.h
+++ b/src/mongo/db/repl/storage_interface_impl.h
@@ -165,8 +165,6 @@ public:
StatusWith<Timestamp> recoverToStableTimestamp(OperationContext* opCtx) override;
- bool supportsRecoverToStableTimestamp(ServiceContext* serviceCtx) const override;
-
bool supportsRecoveryTimestamp(ServiceContext* serviceCtx) const override;
boost::optional<Timestamp> getRecoveryTimestamp(ServiceContext* serviceCtx) const override;
diff --git a/src/mongo/db/repl/storage_interface_mock.h b/src/mongo/db/repl/storage_interface_mock.h
index 5189a4303ff..33629624588 100644
--- a/src/mongo/db/repl/storage_interface_mock.h
+++ b/src/mongo/db/repl/storage_interface_mock.h
@@ -301,10 +301,6 @@ public:
return Status{ErrorCodes::IllegalOperation, "recoverToStableTimestamp not implemented."};
}
- bool supportsRecoverToStableTimestamp(ServiceContext* serviceCtx) const override {
- return false;
- }
-
bool supportsRecoveryTimestamp(ServiceContext* serviceCtx) const override {
return false;
}
diff --git a/src/mongo/db/storage/kv/kv_engine.h b/src/mongo/db/storage/kv/kv_engine.h
index 126a28af5ee..f9312164b2e 100644
--- a/src/mongo/db/storage/kv/kv_engine.h
+++ b/src/mongo/db/storage/kv/kv_engine.h
@@ -342,13 +342,6 @@ public:
virtual void setCachePressureForTest(int pressure) {}
/**
- * See `StorageEngine::supportsRecoverToStableTimestamp`
- */
- virtual bool supportsRecoverToStableTimestamp() const {
- return false;
- }
-
- /**
* See `StorageEngine::supportsRecoveryTimestamp`
*/
virtual bool supportsRecoveryTimestamp() const {
diff --git a/src/mongo/db/storage/kv/kv_storage_engine.cpp b/src/mongo/db/storage/kv/kv_storage_engine.cpp
index 130bf563fe2..902a242645d 100644
--- a/src/mongo/db/storage/kv/kv_storage_engine.cpp
+++ b/src/mongo/db/storage/kv/kv_storage_engine.cpp
@@ -705,10 +705,6 @@ void KVStorageEngine::setCachePressureForTest(int pressure) {
return _engine->setCachePressureForTest(pressure);
}
-bool KVStorageEngine::supportsRecoverToStableTimestamp() const {
- return _engine->supportsRecoverToStableTimestamp();
-}
-
bool KVStorageEngine::supportsRecoveryTimestamp() const {
return _engine->supportsRecoveryTimestamp();
}
@@ -756,7 +752,7 @@ bool KVStorageEngine::supportsReadConcernMajority() const {
}
bool KVStorageEngine::supportsPendingDrops() const {
- return enableKVPendingDrops && supportsRecoverToStableTimestamp();
+ return enableKVPendingDrops && supportsReadConcernMajority();
}
void KVStorageEngine::clearDropPendingState() {
diff --git a/src/mongo/db/storage/kv/kv_storage_engine.h b/src/mongo/db/storage/kv/kv_storage_engine.h
index a200c10106b..df80e48746f 100644
--- a/src/mongo/db/storage/kv/kv_storage_engine.h
+++ b/src/mongo/db/storage/kv/kv_storage_engine.h
@@ -161,8 +161,6 @@ public:
virtual void setCachePressureForTest(int pressure) override;
- virtual bool supportsRecoverToStableTimestamp() const override;
-
virtual bool supportsRecoveryTimestamp() const override;
virtual StatusWith<Timestamp> recoverToStableTimestamp(OperationContext* opCtx) override;
diff --git a/src/mongo/db/storage/storage_engine.h b/src/mongo/db/storage/storage_engine.h
index f281efd0290..8e11a1894ae 100644
--- a/src/mongo/db/storage/storage_engine.h
+++ b/src/mongo/db/storage/storage_engine.h
@@ -327,17 +327,10 @@ public:
virtual void setJournalListener(JournalListener* jl) = 0;
/**
- * Returns whether the storage engine supports "recover to stable timestamp". Returns true
- * if the storage engine supports "recover to stable timestamp" but does not currently have
- * a stable timestamp. In that case StorageEngine::recoverToStableTimestamp() will return
- * a bad status.
- */
- virtual bool supportsRecoverToStableTimestamp() const {
- return false;
- }
-
- /**
- * Returns whether the storage engine can provide a recovery timestamp.
+ * Returns whether the storage engine can provide a timestamp that can be used for recovering
+ * to a stable timestamp. If the storage engine supports "recover to stable timestamp" but does
+ * not currently have a stable timestamp, then StorageEngine::recoverToStableTimestamp() will
+ * return a bad status.
*/
virtual bool supportsRecoveryTimestamp() const {
return false;
@@ -377,8 +370,8 @@ public:
*
* If successful, returns the timestamp that the storage engine recovered to.
*
- * fasserts if StorageEngine::supportsRecoverToStableTimestamp() would return
- * false. Returns a bad status if there is no stable timestamp to recover to.
+ * fasserts if StorageEngine::supportsRecoveryTimestamp() would return false.
+ * Returns a bad status if there is no stable timestamp to recover to.
*
* It is illegal to call this concurrently with `setStableTimestamp` or
* `setInitialDataTimestamp`.
@@ -390,7 +383,7 @@ public:
/**
* Returns the stable timestamp that the storage engine recovered to on startup. If the
* recovery point was not stable, returns "none".
- * fasserts if StorageEngine::supportsRecoverToStableTimestamp() would return false.
+ * fasserts if StorageEngine::supportsRecoveryTimestamp() would return false.
*/
virtual boost::optional<Timestamp> getRecoveryTimestamp() const {
MONGO_UNREACHABLE;
@@ -402,7 +395,7 @@ public:
* durable engines, it is also the guaranteed minimum stable recovery point on server restart
* after crash or shutdown.
*
- * fasserts if StorageEngine::supportsRecoverToStableTimestamp() would return false. Returns
+ * fasserts if StorageEngine::supportsRecoveryTimestamp() would return false. Returns
* boost::none if the recovery time has not yet been established. Replication recoverable
* rollback may not succeed before establishment, and restart will require resync.
*/
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
index 97b2f052ed3..d04603d1705 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
@@ -1657,13 +1657,6 @@ void WiredTigerKVEngine::setInitialDataTimestamp(Timestamp initialDataTimestamp)
_initialDataTimestamp.store(initialDataTimestamp.asULL());
}
-bool WiredTigerKVEngine::supportsRecoverToStableTimestamp() const {
- if (!_keepDataHistory) {
- return false;
- }
- return true;
-}
-
bool WiredTigerKVEngine::supportsRecoveryTimestamp() const {
return true;
}
@@ -1678,11 +1671,6 @@ bool WiredTigerKVEngine::_canRecoverToStableTimestamp() const {
}
StatusWith<Timestamp> WiredTigerKVEngine::recoverToStableTimestamp(OperationContext* opCtx) {
- if (!supportsRecoverToStableTimestamp()) {
- severe() << "WiredTiger is configured to not support recover to a stable timestamp";
- fassertFailed(50665);
- }
-
if (!_canRecoverToStableTimestamp()) {
Timestamp stableTS(_stableTimestamp.load());
Timestamp initialDataTS(_initialDataTimestamp.load());
@@ -1752,24 +1740,12 @@ Timestamp WiredTigerKVEngine::getOldestOpenReadTimestamp() const {
}
boost::optional<Timestamp> WiredTigerKVEngine::getRecoveryTimestamp() const {
- if (!supportsRecoveryTimestamp()) {
- severe() << "WiredTiger is configured to not support providing a recovery timestamp";
- fassertFailed(50745);
- }
-
- if (_recoveryTimestamp.isNull()) {
+ if (_recoveryTimestamp.isNull())
return boost::none;
- }
-
return _recoveryTimestamp;
}
boost::optional<Timestamp> WiredTigerKVEngine::getLastStableRecoveryTimestamp() const {
- if (!supportsRecoverToStableTimestamp()) {
- severe() << "WiredTiger is configured to not support recover to a stable timestamp";
- fassertFailed(50770);
- }
-
if (_ephemeral) {
Timestamp stable(_stableTimestamp.load());
Timestamp initialData(_initialDataTimestamp.load());
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h
index 8e6b2995d8a..30f1ec78d91 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h
@@ -211,8 +211,6 @@ public:
*/
void setOldestTimestamp(Timestamp newOldestTimestamp, bool force) override;
- bool supportsRecoverToStableTimestamp() const override;
-
bool supportsRecoveryTimestamp() const override;
StatusWith<Timestamp> recoverToStableTimestamp(OperationContext* opCtx) override;