summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Russell <gabriel.russell@mongodb.com>2019-02-21 12:14:27 -0500
committerGabriel Russell <gabriel.russell@mongodb.com>2019-02-25 23:43:17 +0000
commitd2850ae4977e376a30ebd542d92fd56c643fbede (patch)
treeb18673b2f81ecdb4cbc6579116e7df50b1fff1cf
parent35ba3dc7312e082ed56f4908f97832f749cf04b5 (diff)
downloadmongo-d2850ae4977e376a30ebd542d92fd56c643fbede.tar.gz
SERVER-39633 Migrate server parameters to IDL in src/mongo/db/repl/rollback_impl.cpp
-rw-r--r--src/mongo/db/repl/SConscript2
-rw-r--r--src/mongo/db/repl/rollback_impl.cpp24
-rw-r--r--src/mongo/db/repl/rollback_impl.idl54
3 files changed, 59 insertions, 21 deletions
diff --git a/src/mongo/db/repl/SConscript b/src/mongo/db/repl/SConscript
index ab824994366..fd3f16f81b7 100644
--- a/src/mongo/db/repl/SConscript
+++ b/src/mongo/db/repl/SConscript
@@ -593,6 +593,7 @@ env.Library(
target='rollback_impl',
source=[
'rollback_impl.cpp',
+ env.Idlc('rollback_impl.idl')[0],
],
LIBDEPS=[
'$BUILD_DIR/mongo/db/concurrency/lock_manager',
@@ -607,6 +608,7 @@ env.Library(
],
LIBDEPS_PRIVATE=[
'drop_pending_collection_reaper',
+ '$BUILD_DIR/mongo/idl/server_parameter',
],
)
diff --git a/src/mongo/db/repl/rollback_impl.cpp b/src/mongo/db/repl/rollback_impl.cpp
index 34eed491bbb..c0d82d2c9f3 100644
--- a/src/mongo/db/repl/rollback_impl.cpp
+++ b/src/mongo/db/repl/rollback_impl.cpp
@@ -33,6 +33,7 @@
#include "mongo/platform/basic.h"
#include "mongo/db/repl/rollback_impl.h"
+#include "mongo/db/repl/rollback_impl_gen.h"
#include "mongo/bson/util/bson_extract.h"
#include "mongo/db/background.h"
@@ -71,25 +72,6 @@ constexpr long long kCollectionScanRequired = -1;
RollbackImpl::Listener kNoopListener;
-// Control whether or not the server will write out data files containing deleted documents during
-// rollback. This server parameter affects both rollback via refetch and rollback via recovery to
-// stable timestamp.
-constexpr bool createRollbackFilesDefault = true;
-MONGO_EXPORT_SERVER_PARAMETER(createRollbackDataFiles, bool, createRollbackFilesDefault);
-
-/**
- * This amount, measured in seconds, represents the maximum allowed rollback period.
- * It is calculated by taking the difference of the wall clock times of the oplog entries
- * at the top of the local oplog and at the common point.
- */
-MONGO_EXPORT_SERVER_PARAMETER(rollbackTimeLimitSecs, int, 60 * 60 * 24) // Default 1 day
- ->withValidator([](const int& newVal) {
- if (newVal > 0) {
- return Status::OK();
- }
- return Status(ErrorCodes::BadValue, "rollbackTimeLimitSecs must be greater than 0");
- });
-
// The name of the insert, update and delete commands as found in oplog command entries.
constexpr auto kInsertCmdName = "insert"_sd;
constexpr auto kUpdateCmdName = "update"_sd;
@@ -141,7 +123,7 @@ constexpr const char* RollbackImpl::kRollbackRemoveSaverType;
constexpr const char* RollbackImpl::kRollbackRemoveSaverWhy;
bool RollbackImpl::shouldCreateDataFiles() {
- return createRollbackDataFiles.load();
+ return gCreateRollbackDataFiles.load();
}
RollbackImpl::RollbackImpl(OplogInterface* localOplog,
@@ -877,7 +859,7 @@ Status RollbackImpl::_checkAgainstTimeLimit(
_rollbackStats.lastLocalWallClockTime = topOfOplogWallTime;
_rollbackStats.commonPointWallClockTime = commonPointWallTime;
- auto timeLimit = static_cast<unsigned long long>(rollbackTimeLimitSecs.loadRelaxed());
+ auto timeLimit = static_cast<unsigned long long>(gRollbackTimeLimitSecs.loadRelaxed());
if (diff > timeLimit) {
return Status(ErrorCodes::UnrecoverableRollbackError,
diff --git a/src/mongo/db/repl/rollback_impl.idl b/src/mongo/db/repl/rollback_impl.idl
new file mode 100644
index 00000000000..d814c44de63
--- /dev/null
+++ b/src/mongo/db/repl/rollback_impl.idl
@@ -0,0 +1,54 @@
+# Copyright (C) 2019-present MongoDB, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the Server Side Public License, version 1,
+# as published by MongoDB, Inc.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# Server Side Public License for more details.
+#
+# You should have received a copy of the Server Side Public License
+# along with this program. If not, see
+# <http://www.mongodb.com/licensing/server-side-public-license>.
+#
+# As a special exception, the copyright holders give permission to link the
+# code of portions of this program with the OpenSSL library under certain
+# conditions as described in each individual source file and distribute
+# linked combinations including the program with the OpenSSL library. You
+# must comply with the Server Side Public License in all respects for
+# all of the code used other than as permitted herein. If you modify file(s)
+# with this exception, you may extend this exception to your version of the
+# file(s), but you are not obligated to do so. If you do not wish to do so,
+# delete this exception statement from your version. If you delete this
+# exception statement from all source files in the program, then also delete
+# it in the license file.
+#
+
+global:
+ cpp_namespace: "mongo"
+
+server_parameters:
+ createRollbackDataFiles:
+ description: >-
+ Control whether or not the server will write out data files containing deleted documents during
+ rollback. This server parameter affects both rollback via refetch and rollback via recovery to
+ stable timestamp.
+ set_at: [startup, runtime]
+ cpp_vartype: AtomicWord<bool>
+ cpp_varname: gCreateRollbackDataFiles
+ default: true
+
+ rollbackTimeLimitSecs:
+ description: >-
+ This amount, measured in seconds, represents the maximum allowed rollback period.
+ It is calculated by taking the difference of the wall clock times of the oplog entries
+ at the top of the local oplog and at the common point.
+ set_at: [startup, runtime]
+ cpp_vartype: AtomicWord<int>
+ cpp_varname: gRollbackTimeLimitSecs
+ default:
+ expr: '60 * 60 * 24' # Default 1 day
+ validator:
+ gt: 0