summaryrefslogtreecommitdiff
path: root/src/mongo/db/kill_sessions_local.cpp
Commit message (Collapse)AuthorAgeFilesLines
* SERVER-40164: Set kill reason ErrorCodes::InterruptedDueToStepDown for ↵Lingzhi Deng2019-05-281-1/+2
| | | | yieldLocksForPreparedTransactions
* SERVER-38456 On shutdown, stepdown and FCV downgrade only kill sessions with ↵Kaloian Manassiev2019-03-061-12/+14
| | | | multi-statement transactions
* SERVER-38810 Use Session's concurrency control rules instead of internal ↵Andy Schwerin2019-02-151-64/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mutexes in TransactionParticipant This type simplifies and clarifies concurrency control in TransactionParticipant by: (1) Removing TP's own mutexes and using the Session concurrency control rules, instead. That is, certain state is only accessible when the Session is checked out, and requires no further locking. Other state is observable either while holding the client lock or while having checked out the Session. The latter type of state is modifiable only when having checked out the session and locked the client. (2) Separating the two types of state in (1) into separate sub-structures in TransactionParticipant, to make it clear who can access what state, (3) Putting all methods formerly on TransactionParticipant onto new member classes, TransactionParticipant::Participant and TransactionParticipant::Observer. The latter can only read the observable state from (1) above, and the participant may read or modify all of the state. The two types introduced by (3) are designed to enforce proper concurrency control by limiting access of their methods to the underlying TransactionParticipant member variables. The observer type has a private o() method which its other methods are required by convention to use in order to obtain read-only access to the Observable state of the TransactionParticipant. The participant type has the o() method plus an o(WithLock) method that allows mutation of the state while holding the client lock, and a p() method which allows reading and writing of the private state with no other locks. Please see the implementation in transaction_participant.cpp for examples. It is worth noting that with this change, locking the Client is not needed often and never for long, and there is no need for separate mutexes for participant state and monitoring state.
* SERVER-39560 - remove leading blank line on all C++ filesBilly Donahue2019-02-131-1/+0
| | | | | | Remove leading comments that are just stating the filename. Move any file-level comments below the copyright banner. Remove leading blank lines.
* SERVER-37456 Make the global CursorManager a decoration on ServiceContextAnton Korshunov2019-02-111-2/+1
|
* SERVER-39065 Delete withCursorManager() and visitAllCursorManagers().David Storch2019-01-311-1/+2
|
* SERVER-38282 Yield locks for prepared transactions on stepdown.Siyuan Zhou2019-01-241-0/+32
|
* SERVER-36485 killSessions to ignore sessions with prepared transactionsMisha Tyulenev2019-01-161-11/+14
|
* SERVER-38810 Simplify correct usage of locking in Session/SessionCatalog.Andy Schwerin2019-01-101-32/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduces two new types for gaining access to sessions in the session catalog, based on the context of the access. It leaves a third way to access sessions, which is via OperationContextSession::get(). The new types are ObservableSession and SessionToKill. With this change, a thread may access a session in one of three ways: (1) by binding the session to an OperationContext for regular use, by instantiation of OperationContextSession or MongoDOperationContextSession, as before. (2) In the callback passed to SessionCatalog::scanSessions, in which case the callback is passed an ObservableSession that represents looking at a Session while the SessionCatalog mutex is locked and while the bound OperationContext's client mutex is held, if the session is currently checked out via methods (1) or (3). (3) By calling SessionCatalog::checkOutSessionForKill, which returns a KillableSession. This is used for cleaning a session up after it is marked for kill. This patch eliminates Session::_mutex, which is no longer required, as the SessionCatalog::_mutex and the Client provide all necessary mutual exclusion for the Session type itself.
* SERVER-36493 invalidate in-memory state of prepared txns on repl rollbackPavi Vetriselvan2018-12-101-0/+18
|
* SERVER-37923 Rename TransactionParticipant::getFromNonCheckedOutSession to ↵Kaloian Manassiev2018-12-061-15/+9
| | | | be just get(Session*)
* SERVER-37244 Make sessions killable outside of the ↵Kaloian Manassiev2018-10-311-20/+74
| | | | Session/TransactionParticipant object
* SERVER-37244 Pull the Session state management from SessionRuntimeInfo into ↵Kaloian Manassiev2018-10-301-12/+7
| | | | | | | | Session The session's check-out state is currently duplicated between SessionCatalog's internal container structure and the Session class. This change moves it all to be under Session.
* SERVER-37711 Revert commits related to lock yielding for prepared ↵Kaloian Manassiev2018-10-251-11/+0
| | | | | | | | | | | transactions on step down This change reverts the following commits: * SERVER-35870 Allow stepdown to work with prepared transactions (f96903979ac329a760e7b6f1bb5d8695d3daf2a7) * SERVER-36913 Add functionality to LockManager for repl state transitions with prepared transactions (e65ff57e108ed69c46cc0b0ccbdd675663de2469) * SERVER-35870 Allow more than one thread to block Session checkout at a time (9406af079a894bae80fbbec4703b04974bf84476) * SERVER-35870 Add functionality to prevent Session checkouts & wait for all Sessions to be checked in (c6d90316d6b694e12426274c713a4a078e004fc5)
* SERVER-37651 Update header files with new licenseRamon Fernandez2018-10-221-21/+23
|
* SERVER-37244 Move MongoD-specific code out of SessionCatalogKaloian Manassiev2018-10-121-29/+40
|
* SERVER-35870 Allow stepdown to work with prepared transactionsSpencer T Brody2018-09-281-0/+11
|
* SERVER-35817 Allow shutdowns while prepared transactions are in-flightSpencer T Brody2018-09-131-0/+9
|
* SERVER-35900 Refactor transaction machinery out from Session classRandolph Tan2018-08-081-14/+6
|
* SERVER-35217 Do not kill associated client cursors when transaction endsTess Avitabile2018-06-081-12/+3
|
* SERVER-34800 The transaction aborter thread uses 0-second lock acquisition ↵Dianna Hohensee2018-05-151-1/+21
| | | | timeout for all lock requests
* SERVER-34795 killSessions should kill transactions prior to killing cursorsTess Avitabile2018-05-081-2/+2
|
* SERVER-33690 Transaction abort and commit should kill any associated client ↵James Wahlin2018-04-161-3/+12
| | | | cursors
* SERVER-33295 Periodic task to check for and kill expired transactions.Dianna Hohensee2018-04-131-0/+9
| | | | (Adding a new int server parameter 'transactionLifetimeLimitSeconds'.)
* SERVER-33217 Add abortTransaction command.Siyuan Zhou2018-03-221-1/+1
|
* SERVER-33669 Stepdown and shutdown should abort all uncommitted transactionsTess Avitabile2018-03-201-1/+1
|
* SERVER-33672 Make killSessionsLocal() kill any matching SessionsTess Avitabile2018-03-141-11/+17
|
* SERVER-31565 Add stats about logical sessions background jobs to serverStatusJason Carey2017-11-071-1/+2
|
* Revert "SERVER-31565 Add stats about logical sessions background jobs to ↵Ian Whalen2017-11-021-2/+1
| | | | | | serverStatus" This reverts commit 7cd8508b06e1574bea211dff054855b70b7cc20e.
* SERVER-31565 Add stats about logical sessions background jobs to serverStatussamantharitter2017-11-011-1/+2
|
* SERVER-28338 KillSessions SupportJason Carey2017-08-171-0/+63