diff options
Diffstat (limited to 'src/mongo/db/logical_session_cache.idl')
-rw-r--r-- | src/mongo/db/logical_session_cache.idl | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/mongo/db/logical_session_cache.idl b/src/mongo/db/logical_session_cache.idl new file mode 100644 index 00000000000..3294df14378 --- /dev/null +++ b/src/mongo/db/logical_session_cache.idl @@ -0,0 +1,75 @@ +# 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: + + logicalSessionRefreshMillis: + description: The interval (in milliseconds) at which the cache refreshes its logical session + records against the main session store. + set_at: startup + cpp_vartype: int + cpp_varname: logicalSessionRefreshMillis + default: 300000 + + maxSessions: + description: The maximum number of sessions that can be cached. + set_at: startup + cpp_vartype: int + cpp_varname: maxSessions + default: 1000000 + + disableLogicalSessionCacheRefresh: + description: Disable the logical session cache refresh (for testing only). + set_at: startup + cpp_vartype: bool + cpp_varname: disableLogicalSessionCacheRefresh + default: false + + TransactionRecordMinimumLifetimeMinutes: + # The minimum lifetime for a transaction record is how long it has to have lived on the server + # before we'll consider it for cleanup. This is effectively the window for how long it is + # permissible for a mongos to hang before we're willing to accept a failure of the retryable + # writes subsystem. + # + # Specifically, we imagine that a client connects to one mongos on a session and performs a + # retryable write after which that mongos hangs. Then the client connects to a new mongos on the + # same session and successfully executes its write. After a day passes, the session will time + # out, cleaning up the retryable write. Then the original mongos wakes up, vivifies the session + # and executes the write (because all records of the session + transaction have been deleted). + # + # So the write is performed twice, which is unavoidable without losing session vivification + # and/or requiring synchronized clocks all the way out to the client. In lieu of that we + # provide a weaker guarantee after the minimum transaction lifetime. + description: The minimum lifetime for a transaction record. + set_at: startup + cpp_vartype: int + cpp_varname: gTransactionRecordMinimumLifetimeMinutes + default: 30 |