#include <mongocxx/v_noabi/mongocxx/client_session.hpp>
Supports MongoDB client session operations.
Use a session for a sequence of operations, optionally with either causal consistency or snapshots.
Note that client_session is not thread-safe. See https://www.mongodb.com/docs/languages/cpp/cpp-driver/current/thread-safety/ for more details.
- See also
-
|
| using | with_transaction_cb = std::function<void (client_session*)> |
| | Represents a callback invoked within a transaction.
|
◆ with_transaction_cb
Represents a callback invoked within a transaction.
◆ abort_transaction()
| void mongocxx::v_noabi::client_session::abort_transaction |
( |
| ) |
|
Aborts a transaction on the current client session.
- Exceptions
-
◆ advance_cluster_time()
Advance the cluster time for a session. Has an effect only if the new cluster time is greater than the session's current cluster time.
Use advance_operation_time() and advance_cluster_time() to copy the operationTime and clusterTime from another session, ensuring subsequent operations in this session are causally consistent with the last operation in the other session.
◆ advance_operation_time()
Advance the session's operation time, expressed as a BSON timestamp. Has an effect only if the new operation time is greater than the session's current operation time.
Use advance_operation_time() and advance_cluster_time() to copy the operationTime and clusterTime from another session, ensuring subsequent operations in this session are causally consistent with the last operation in the other session.
◆ client()
| v_noabi::client const & mongocxx::v_noabi::client_session::client |
( |
| ) |
const |
|
inlinenoexcept |
Gets the client that started this session.
◆ cluster_time()
Get the session's clusterTime, as a BSON document. This is an opaque value suitable for passing to advance_cluster_time(). The document is empty if the session has not been used for any operation and you have not called advance_cluster_time(). This view is invalid after the session is destroyed.
◆ commit_transaction()
| void mongocxx::v_noabi::client_session::commit_transaction |
( |
| ) |
|
Commits a transaction on the current client session.
- Exceptions
-
| mongocxx::v_noabi::operation_exception | if the options are misconfigured, if there are network or other transient failures, or if there are other errors such as a session with no transaction in progress. |
◆ get_dirty()
| bool mongocxx::v_noabi::client_session::get_dirty |
( |
| ) |
const |
|
inlinenoexcept |
Returns whether or not this session is dirty.
◆ get_transaction_state()
Returns the current transaction state for this session.
◆ id()
Get the server-side "logical session ID" associated with this session, as a BSON document. This view is invalid after the session is destroyed.
◆ operation_time()
Get the session's operationTime, as a BSON timestamp. This is an opaque value suitable for passing to advance_operation_time(). The timestamp is zero if the session has not been used for any operation and you have not called advance_operation_time().
◆ options()
Gets the options this session was created with.
◆ server_id()
| std::uint32_t mongocxx::v_noabi::client_session::server_id |
( |
| ) |
const |
|
inlinenoexcept |
Get the server_id the session is pinned to. The server_id is zero if the session is not pinned to a server.
◆ start_transaction()
Starts a transaction on the current client session.
- Parameters
-
| transaction_opts | (optional) The options to use in the transaction. |
- Exceptions
-
| mongocxx::v_noabi::operation_exception | if the options are misconfigured, if there are network or other transient failures, or if there are other errors such as a session with a transaction already in progress. |
◆ with_transaction()
Helper to run a user-provided callback within a transaction.
This method will start a new transaction on this client session, run the callback, then commit the transaction. If it cannot commit the transaction, the entire sequence may be retried, and the callback may be run multiple times.
This method has an internal non-adjustable time limit of 120 seconds, including all retries.
If the user callback invokes driver methods that run operations against the server which could throw an operation_exception, the user callback MUST allow those exceptions to propagate up the stack so they can be caught and processed by the with_transaction() helper.
For example, a callback that invokes collection::insert_one may encounter a "duplicate key" error with accompanying server-side transaction abort. If this error were not seen by the with_transaction() helper, the entire transaction would retry repeatedly until the overall time limit expires.
- Parameters
-
| cb | The callback to run inside of a transaction. |
| opts | (optional) The options to use to run the transaction. |
- Exceptions
-
The documentation for this class was generated from the following file: