diff options
author | Gabriel Russell <gabriel.russell@mongodb.com> | 2019-02-21 12:14:27 -0500 |
---|---|---|
committer | Gabriel Russell <gabriel.russell@mongodb.com> | 2019-02-25 23:43:17 +0000 |
commit | d2850ae4977e376a30ebd542d92fd56c643fbede (patch) | |
tree | b18673b2f81ecdb4cbc6579116e7df50b1fff1cf | |
parent | 35ba3dc7312e082ed56f4908f97832f749cf04b5 (diff) | |
download | mongo-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/SConscript | 2 | ||||
-rw-r--r-- | src/mongo/db/repl/rollback_impl.cpp | 24 | ||||
-rw-r--r-- | src/mongo/db/repl/rollback_impl.idl | 54 |
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 |