# Copyright (C) 2018-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 # . # # 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" cpp_includes: - "mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h" - "mongo/util/concurrency/ticketholder.h" - "mongo/util/debug_util.h" server_parameters: wiredTigerConcurrentWriteTransactions: description: "WiredTiger Concurrent Write Transactions" set_at: [ startup, runtime ] cpp_class: name: OpenWriteTransactionParam data: 'TicketHolder*' override_ctor: true wiredTigerConcurrentReadTransactions: description: "WiredTiger Concurrent Read Transactions" set_at: [ startup, runtime ] cpp_class: name: OpenReadTransactionParam data: 'TicketHolder*' override_ctor: true wiredTigerEngineRuntimeConfig: description: 'WiredTiger Configuration' set_at: runtime cpp_class: name: WiredTigerEngineRuntimeConfigParameter data: 'std::pair' # The data element of this param gets initialized in three # disparate ways by different parts of the codebase # none of which are easily encoded here. # Defer the initialization with condition: false # and allow those places to manually set themselves up. condition: { expr: false } wiredTigerSessionCloseIdleTimeSecs: description: 'Close idle wiredtiger sessions in the session cache after this many seconds' cpp_vartype: 'AtomicWord' cpp_varname: gWiredTigerSessionCloseIdleTimeSecs set_at: [ startup, runtime ] default: # The default is 5 mins with a shorter default in the debug build to aid testing. expr: 'kDebugBuild ? 5 : 300' validator: gte: 0 # The "wiredTigerCursorCacheSize" parameter has the following meaning. # # wiredTigerCursorCacheSize == 0 # For this setting, cursors are only cached in the WiredTiger storage engine # itself. Operations that need exclusive access such as drop or verify will # not be blocked by inactive cached cursors with this setting. However, this # setting may reduce the performance of certain workloads that normally # benefit from cursor caching above the storage engine. # # wiredTigerCursorCacheSize > 0 # WiredTiger-level caching of cursors is disabled but cursor caching does # occur above the storage engine. The value of this setting represents the # maximum number of cursors that are cached. Setting the value to 10000 will # give the old (<= 3.6) behavior. Note that cursors remain cached, even when a # session is released back to the cache. Thus, exclusive operations may be # blocked temporarily, and in some cases, a long time. Drops that fail because # of exclusivity silently succeed and are queued for retries. # # wiredTigerCursorCacheSize < 0 # This is a hybrid approach of the above two, and is the default. The the # absolute value of the setting is used as the number of cursors cached above # the storage engine. When a session is released, all cursors are closed, and # will be cached in WiredTiger. Exclusive operations should only be blocked # for a short time, except if a cursor is held by a long running session. This # is a good compromise for most workloads. wiredTigerCursorCacheSize: description: 'Wired tiger cursor cache size' set_at: [ startup, runtime ] cpp_vartype: 'AtomicWord' cpp_varname: gWiredTigerCursorCacheSize default: -100 wiredTigerMaxCacheOverflowSizeGB: description: >- Maximum amount of disk space to use for cache overflow; Defaults to 0 (unbounded) Deprecated. set_at: runtime cpp_vartype: 'AtomicWord' cpp_varname: gWiredTigerMaxCacheOverflowSizeGBDeprecated default: 0 wiredTigerEvictionDebugMode: description: >- If true, modify internal WiredTiger algorithms to force lookaside eviction to happen more aggressively. set_at: startup cpp_vartype: 'bool' cpp_varname: gWiredTigerEvictionDebugMode default: false # This parameter is only allowed in debug builds. condition: constexpr: 'kDebugBuild' wiredTigerFileHandleCloseIdleTime: description: >- The amount of time in seconds a file handle in WiredTiger needs to be idle before attempting to close it. set_at: startup cpp_vartype: 'std::int32_t' cpp_varname: gWiredTigerFileHandleCloseIdleTime default: 100000 validator: gte: 1 wiredTigerFileHandleCloseMinimum: description: >- The number of handles open before the WiredTiger file manager will look for handles to close. set_at: startup cpp_vartype: 'std::int32_t' cpp_varname: gWiredTigerFileHandleCloseMinimum default: 250 validator: gte: 1 wiredTigerFileHandleCloseScanInterval: description: >- The interval in seconds at which WiredTiger checks for inactive files and closes them. set_at: startup cpp_vartype: 'std::int32_t' cpp_varname: gWiredTigerFileHandleCloseScanInterval default: 10 validator: gte: 1