From fcc573617ec1f3d57b9d2ba06e16f20aa67a47bd Mon Sep 17 00:00:00 2001 From: rustagir Date: Wed, 11 Sep 2024 12:55:48 -0400 Subject: [PATCH 01/11] DOCSP-41995: transaction --- snooty.toml | 1 + source/includes/write/transaction.php | 52 ++++++++ source/write.txt | 1 + source/write/transaction.txt | 168 ++++++++++++++++++++++++++ 4 files changed, 222 insertions(+) create mode 100644 source/includes/write/transaction.php create mode 100644 source/write/transaction.txt diff --git a/snooty.toml b/snooty.toml index d2d18efa..2c74c607 100644 --- a/snooty.toml +++ b/snooty.toml @@ -44,3 +44,4 @@ stable-api = "Stable API" library-short = "PHP library" api = "https://www.mongodb.com/docs/php-library/current/reference" php-manual = "https://www.php.net/manual/en" +extension-short = "PHP extension" \ No newline at end of file diff --git a/source/includes/write/transaction.php b/source/includes/write/transaction.php new file mode 100644 index 00000000..ace53c26 --- /dev/null +++ b/source/includes/write/transaction.php @@ -0,0 +1,52 @@ +bank->receipts; +$checking = $client->bank->checking_accounts; +$saving = $client->bank->saving_accounts; + +$accountId = '5678'; +$transferAmount = 1000.00; + +$callback = function (MongoDB\Driver\Session $session) + use ($checking, $saving, $receipts, $accountId, $transferAmount): void { + + $checking->updateOne( + ['account_id' => $accountId], + ['$inc' => ['balance' => -$transferAmount]], + ['session' => $session] + ); + + $saving->updateOne( + ['account_id' => $accountId], + ['$inc' => ['balance' => $transferAmount]], + ['session' => $session] + ); + + $summary = sprintf( + "SAVINGS +%u CHECKING -%u.", $transferAmount, $transferAmount + ); + + $receipts->insertOne([ + 'account_id' => $accountId, + 'description' => $summary, + 'timestamp' => new MongoDB\BSON\UTCDateTime((new DateTime())->getTimestamp()*1000), + ], ['session' => $session]); + + echo 'Successfully performed transaction!\n'; +}; +// end-callback + +// begin-txn +$session = $client->startSession(); + +try { + MongoDB\with_transaction($session, $callback); +} catch (Exception $e) { + echo 'Caught exception: ', $e->getMessage(), '\n'; +} +// end-txn \ No newline at end of file diff --git a/source/write.txt b/source/write.txt index ee30d336..8d9d16ca 100644 --- a/source/write.txt +++ b/source/write.txt @@ -27,6 +27,7 @@ Write Data to MongoDB /write/delete /write/replace /write/bulk-write + /write/transaction /write/gridfs Overview diff --git a/source/write/transaction.txt b/source/write/transaction.txt new file mode 100644 index 00000000..8056b88d --- /dev/null +++ b/source/write/transaction.txt @@ -0,0 +1,168 @@ +.. _php-transactions: + +===================== +Perform a Transaction +===================== + +.. facet:: + :name: genre + :values: reference + +.. meta:: + :keywords: code example, ACID compliance, multi-document + +.. contents:: On this page + :local: + :backlinks: none + :depth: 2 + :class: singlecol + +Overview +-------- + +In this guide, you can learn how to use the {+driver-short+} to perform +**transactions**. Transactions allow you to perform a series of operations +that change data only if the entire transaction is committed. +If any operation in the transaction does not succeed, the driver stops the +transaction and discards all data changes before they ever become +visible. This feature is called **atomicity**. + +In MongoDB, transactions run within logical sessions. A +session is a grouping of related read or write operations that you +want to run sequentially. Sessions enable causal consistency for a group +of operations and allow you to run operations in an **ACID-compliant** +transaction, which is a transaction that meets an expectation of +atomicity, consistency, isolation, and durability. MongoDB guarantees +that the data involved in your transaction operations remains +consistent, even if the operations encounter unexpected errors. + +When using the {+php-library+}, you can create a new session from a +``MongoDB\Client`` instance. Then, you can use the resulting +``MongoDB\Driver\Session`` instance to perform transactions. You can +improve your app's performance by reusing your client for multiple +sessions and transactions instead of instantiating a new client each +time. + +.. warning:: + + Use a ``Session`` only in operations running on the + ``Client`` that created it. Using a ``Session`` with a + different ``Client`` results in operation errors. + +Methods +------- + +Create a ``Session`` by using the ``MongoDB\Client::startSession()`` +method on your ``Client`` instance. The {+php-library+} provides a +Convenient Transaction API to manage the transaction lifecyle. Use the +``MongoDB\with_transaction()`` method to run custom callback within a +transaction. The ``with_transaction()`` method starts the transaction, +then either commits it or ends it if there are errors. The +:ref:`php-txn-example` section of this guide demonstrates how to use +this API to perform a transaction. + +Alternatively, you can have more control over your transaction lifecyle +by using the methods provided by the ``Session`` class. The +following table describes these methods: + +.. list-table:: + :widths: 25 75 + :stub-columns: 1 + :header-rows: 1 + + * - Method + - Description + + * - ``startTransaction()`` + - | Starts a new transaction on this session. The session + must be passed into each operation within the transaction, or + the operation will run outside of the transaction. + | + | You can set transaction options by passing an options parameter. + + * - ``commitTransaction()`` + - | Commits the active transaction for this session. This method returns an + error if there is no active transaction for the session or the + transaction was previously ended. + + * - ``abortTransaction()`` + - | Ends the active transaction for this session. This method returns an + error if there is no active transaction for the session or if the + transaction was committed or ended. + +.. _php-txn-example: + +Transaction Example +------------------- + +The following code defines the ``transferTxn()`` callback function that +modifies data in the ``saving_accounts``, ``checking_accounts``, and ``receipts`` +collections of the ``bank`` database: + +.. literalinclude:: /includes/write/transaction.php + :language: php + :dedent: + :start-after: begin-callback + :end-before: end-callback + +Then, run the following code to perform the transaction. This code +completes the following actions: + +1. Creates a session from the client by using the ``startSession()`` method. +#. Calls the ``with_transaction()`` method to manage the transaction, + passing the session and the callback as parameters. + +.. io-code-block:: + + .. input:: /includes/write/transaction.php + :language: php + :dedent: + :start-after: begin-txn + :end-before: end-txn + + .. output:: + :language: console + :visible: false + + Successfully committed transaction! + +Additional Information +---------------------- + +To learn more about the concepts mentioned in this guide, see the +following pages in the {+mdb-server+} manual: + +- :manual:`Transactions ` +- :manual:`Server Sessions ` +- :manual:`Read Isolation, Consistency, and Recency + ` + +To learn more about ACID compliance, see the :website:`What are ACID +Properties in Database Management Systems? ` +article on the MongoDB website. + +To learn more about insert operations, see the +:ref:`php-write-insert` guide. + +API Documentation +~~~~~~~~~~~~~~~~~ + +To learn more about the methods and types mentioned in this +guide, see the following API documentation: + +- :phpclass:`MongoDB\Client` +- :phpmethod:`MongoDB\Client::startSession()` +- :phpmethod:`MongoDB\Collection::updateOne()` +- :phpmethod:`MongoDB\Collection::insertOne()` + +To learn more about the ``Session`` class and methods, +see the following {+extension-short+} API documentation: + +- `MongoDB\\Driver\\Session + `__ +- `MongoDB\\Driver\\Session::abortTransaction() + `__ +- `MongoDB\\Driver\\Session::commitTransaction() + `__ +- `MongoDB\\Driver\\Session::startTransaction() + `__ From ada33fc2a7faa389a91096008ae5f16054815420 Mon Sep 17 00:00:00 2001 From: rustagir Date: Wed, 11 Sep 2024 13:06:48 -0400 Subject: [PATCH 02/11] wip --- source/includes/write/transaction.php | 9 +++++---- source/write/transaction.txt | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/source/includes/write/transaction.php b/source/includes/write/transaction.php index ace53c26..76e26db7 100644 --- a/source/includes/write/transaction.php +++ b/source/includes/write/transaction.php @@ -34,10 +34,11 @@ $receipts->insertOne([ 'account_id' => $accountId, 'description' => $summary, - 'timestamp' => new MongoDB\BSON\UTCDateTime((new DateTime())->getTimestamp()*1000), - ], ['session' => $session]); + 'timestamp' => new MongoDB\BSON\UTCDateTime(), + ], + ['session' => $session]); - echo 'Successfully performed transaction!\n'; + echo 'Successfully performed transaction!' , "\n"; }; // end-callback @@ -47,6 +48,6 @@ try { MongoDB\with_transaction($session, $callback); } catch (Exception $e) { - echo 'Caught exception: ', $e->getMessage(), '\n'; + echo 'Caught exception: ', $e->getMessage(), "\n"; } // end-txn \ No newline at end of file diff --git a/source/write/transaction.txt b/source/write/transaction.txt index 8056b88d..1f795f01 100644 --- a/source/write/transaction.txt +++ b/source/write/transaction.txt @@ -124,7 +124,7 @@ completes the following actions: :language: console :visible: false - Successfully committed transaction! + Successfully performed transaction! Additional Information ---------------------- From 8218890b42bd4cb9ad4e38412646f176088d2fdd Mon Sep 17 00:00:00 2001 From: rustagir Date: Wed, 11 Sep 2024 16:13:53 -0400 Subject: [PATCH 03/11] update code --- source/includes/write/transaction.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/includes/write/transaction.php b/source/includes/write/transaction.php index 76e26db7..f50b8dd2 100644 --- a/source/includes/write/transaction.php +++ b/source/includes/write/transaction.php @@ -33,12 +33,13 @@ $receipts->insertOne([ 'account_id' => $accountId, - 'description' => $summary, + 'summary' => $summary, 'timestamp' => new MongoDB\BSON\UTCDateTime(), ], ['session' => $session]); - echo 'Successfully performed transaction!' , "\n"; + echo 'Successfully performed transaction!' , PHP_EOL; + echo 'Summary: ', $summary, PHP_EOL; }; // end-callback From 0492a7f464940795e55a1c330fc0b0b30a2cc242 Mon Sep 17 00:00:00 2001 From: rustagir Date: Wed, 11 Sep 2024 16:17:59 -0400 Subject: [PATCH 04/11] NR PR fixes 1 --- snooty.toml | 2 +- source/includes/write/transaction.php | 2 +- source/write/transaction.txt | 16 +++++++++------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/snooty.toml b/snooty.toml index 2c74c607..5f676f6e 100644 --- a/snooty.toml +++ b/snooty.toml @@ -44,4 +44,4 @@ stable-api = "Stable API" library-short = "PHP library" api = "https://www.mongodb.com/docs/php-library/current/reference" php-manual = "https://www.php.net/manual/en" -extension-short = "PHP extension" \ No newline at end of file +extension-short = "PHP extension" diff --git a/source/includes/write/transaction.php b/source/includes/write/transaction.php index f50b8dd2..77a41fc2 100644 --- a/source/includes/write/transaction.php +++ b/source/includes/write/transaction.php @@ -28,7 +28,7 @@ ); $summary = sprintf( - "SAVINGS +%u CHECKING -%u.", $transferAmount, $transferAmount + "SAVINGS +%u CHECKING -%u", $transferAmount, $transferAmount ); $receipts->insertOne([ diff --git a/source/write/transaction.txt b/source/write/transaction.txt index 1f795f01..1c3bdfcc 100644 --- a/source/write/transaction.txt +++ b/source/write/transaction.txt @@ -20,10 +20,10 @@ Perform a Transaction Overview -------- -In this guide, you can learn how to use the {+driver-short+} to perform +In this guide, you can learn how to use the {+php-library+} to perform **transactions**. Transactions allow you to perform a series of operations that change data only if the entire transaction is committed. -If any operation in the transaction does not succeed, the driver stops the +If any operation in the transaction does not succeed, the library stops the transaction and discards all data changes before they ever become visible. This feature is called **atomicity**. @@ -116,6 +116,7 @@ completes the following actions: .. input:: /includes/write/transaction.php :language: php + :copyable: :dedent: :start-after: begin-txn :end-before: end-txn @@ -125,6 +126,7 @@ completes the following actions: :visible: false Successfully performed transaction! + Summary: SAVINGS +1000 CHECKING -1000 Additional Information ---------------------- @@ -135,7 +137,7 @@ following pages in the {+mdb-server+} manual: - :manual:`Transactions ` - :manual:`Server Sessions ` - :manual:`Read Isolation, Consistency, and Recency - ` + ` To learn more about ACID compliance, see the :website:`What are ACID Properties in Database Management Systems? ` @@ -159,10 +161,10 @@ To learn more about the ``Session`` class and methods, see the following {+extension-short+} API documentation: - `MongoDB\\Driver\\Session - `__ + <{+php-manual+}/class.mongodb-driver-session.php>`__ - `MongoDB\\Driver\\Session::abortTransaction() - `__ + <{+php-manual+}/mongodb-driver-session.aborttransaction.php>`__ - `MongoDB\\Driver\\Session::commitTransaction() - `__ + <{+php-manual+}/mongodb-driver-session.committransaction.php>`__ - `MongoDB\\Driver\\Session::startTransaction() - `__ + <{+php-manual+}/mongodb-driver-session.starttransaction.php>`__ From b85aed79546e4358c2556da6b5267f9bfd845750 Mon Sep 17 00:00:00 2001 From: rustagir Date: Wed, 11 Sep 2024 16:26:16 -0400 Subject: [PATCH 05/11] wip --- source/write/transaction.txt | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/source/write/transaction.txt b/source/write/transaction.txt index 1c3bdfcc..6ed7de5a 100644 --- a/source/write/transaction.txt +++ b/source/write/transaction.txt @@ -95,11 +95,22 @@ following table describes these methods: Transaction Example ------------------- -The following code defines the ``transferTxn()`` callback function that -modifies data in the ``saving_accounts``, ``checking_accounts``, and ``receipts`` -collections of the ``bank`` database: +This example defines a callback function that +modifies data in the collections of the ``bank`` database for a +banking transaction. The code performs the following actions: + +- Creates ``Collection`` instances to access the target + collections. +- Specifies the account number and amount to be transferred between + accounts. +- Defines the callback function, passing the ``Session`` instance as a + parameter. +- Updates the customer's balances to reflect the money transfer. +- Records a receipt of the transaction with a timestamp. +- Prints a message if the transaction committed successfully. .. literalinclude:: /includes/write/transaction.php + :copyable: :language: php :dedent: :start-after: begin-callback @@ -113,10 +124,10 @@ completes the following actions: passing the session and the callback as parameters. .. io-code-block:: + :copyable: .. input:: /includes/write/transaction.php :language: php - :copyable: :dedent: :start-after: begin-txn :end-before: end-txn From 73ee986bab4b86811fb4890e0f24316c37fc961e Mon Sep 17 00:00:00 2001 From: rustagir Date: Wed, 11 Sep 2024 16:29:57 -0400 Subject: [PATCH 06/11] add emphasis --- source/write/transaction.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/source/write/transaction.txt b/source/write/transaction.txt index 6ed7de5a..c477b204 100644 --- a/source/write/transaction.txt +++ b/source/write/transaction.txt @@ -131,6 +131,7 @@ completes the following actions: :dedent: :start-after: begin-txn :end-before: end-txn + :emphasize-lines: 1, 4 .. output:: :language: console From f107bc9f86159e16d89391fa2a7c49677c0168b9 Mon Sep 17 00:00:00 2001 From: rustagir Date: Wed, 11 Sep 2024 16:31:03 -0400 Subject: [PATCH 07/11] add with_txn() method to api links --- source/write/transaction.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/source/write/transaction.txt b/source/write/transaction.txt index c477b204..e42ab494 100644 --- a/source/write/transaction.txt +++ b/source/write/transaction.txt @@ -166,6 +166,7 @@ guide, see the following API documentation: - :phpclass:`MongoDB\Client` - :phpmethod:`MongoDB\Client::startSession()` +- :phpmethod:`MongoDB\with_transaction()` - :phpmethod:`MongoDB\Collection::updateOne()` - :phpmethod:`MongoDB\Collection::insertOne()` From 3ede497cc88a09e00bd7aedfd7f34472051d2729 Mon Sep 17 00:00:00 2001 From: rustagir Date: Thu, 26 Sep 2024 12:44:06 -0400 Subject: [PATCH 08/11] cxn string env --- source/includes/write/transaction.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/includes/write/transaction.php b/source/includes/write/transaction.php index 77a41fc2..5e7781a7 100644 --- a/source/includes/write/transaction.php +++ b/source/includes/write/transaction.php @@ -1,7 +1,7 @@ Date: Thu, 26 Sep 2024 15:33:56 -0400 Subject: [PATCH 09/11] JM tech review 1 --- source/includes/write/transaction.php | 56 +++++++++++---------- source/write/transaction.txt | 70 +++++++++++++++++---------- 2 files changed, 74 insertions(+), 52 deletions(-) diff --git a/source/includes/write/transaction.php b/source/includes/write/transaction.php index 5e7781a7..eaa73394 100644 --- a/source/includes/write/transaction.php +++ b/source/includes/write/transaction.php @@ -9,37 +9,41 @@ $checking = $client->bank->checking_accounts; $saving = $client->bank->saving_accounts; -$accountId = '5678'; -$transferAmount = 1000.00; - -$callback = function (MongoDB\Driver\Session $session) - use ($checking, $saving, $receipts, $accountId, $transferAmount): void { - +$accountId = "5678"; +$transferAmount = 1000.0; + +$callback = function (MongoDB\Driver\Session $session) use ( + $checking, + $saving, + $receipts, + $accountId, + $transferAmount +): void { $checking->updateOne( - ['account_id' => $accountId], - ['$inc' => ['balance' => -$transferAmount]], - ['session' => $session] + ["account_id" => $accountId], + ['$inc' => ["balance" => -$transferAmount]], + ["session" => $session] ); - + $saving->updateOne( - ['account_id' => $accountId], - ['$inc' => ['balance' => $transferAmount]], - ['session' => $session] + ["account_id" => $accountId], + ['$inc' => ["balance" => $transferAmount]], + ["session" => $session] ); - $summary = sprintf( - "SAVINGS +%u CHECKING -%u", $transferAmount, $transferAmount - ); + $summary = sprintf('SAVINGS +%1$u CHECKING -%1$u', $transferAmount); - $receipts->insertOne([ - 'account_id' => $accountId, - 'summary' => $summary, - 'timestamp' => new MongoDB\BSON\UTCDateTime(), - ], - ['session' => $session]); + $receipts->insertOne( + [ + "account_id" => $accountId, + "summary" => $summary, + "timestamp" => new MongoDB\BSON\UTCDateTime(), + ], + ["session" => $session] + ); - echo 'Successfully performed transaction!' , PHP_EOL; - echo 'Summary: ', $summary, PHP_EOL; + echo "Successfully performed transaction!", PHP_EOL; + echo "Summary: ", $summary, PHP_EOL; }; // end-callback @@ -48,7 +52,7 @@ try { MongoDB\with_transaction($session, $callback); -} catch (Exception $e) { - echo 'Caught exception: ', $e->getMessage(), "\n"; +} catch (MongoDB\Driver\Exception\RuntimeException $e) { + echo "Caught exception: ", $e->getMessage(), PHP_EOL; } // end-txn \ No newline at end of file diff --git a/source/write/transaction.txt b/source/write/transaction.txt index e42ab494..f5a12604 100644 --- a/source/write/transaction.txt +++ b/source/write/transaction.txt @@ -38,10 +38,7 @@ consistent, even if the operations encounter unexpected errors. When using the {+php-library+}, you can create a new session from a ``MongoDB\Client`` instance. Then, you can use the resulting -``MongoDB\Driver\Session`` instance to perform transactions. You can -improve your app's performance by reusing your client for multiple -sessions and transactions instead of instantiating a new client each -time. +``MongoDB\Driver\Session`` instance to perform transactions. .. warning:: @@ -49,18 +46,42 @@ time. ``Client`` that created it. Using a ``Session`` with a different ``Client`` results in operation errors. -Methods -------- +Transaction APIs +---------------- -Create a ``Session`` by using the ``MongoDB\Client::startSession()`` -method on your ``Client`` instance. The {+php-library+} provides a -Convenient Transaction API to manage the transaction lifecyle. Use the -``MongoDB\with_transaction()`` method to run custom callback within a -transaction. The ``with_transaction()`` method starts the transaction, -then either commits it or ends it if there are errors. The -:ref:`php-txn-example` section of this guide demonstrates how to use +In this section, you can learn about the transaction APIs provided by +the {+php-library+}. Before you begin a transaction, you must create a +``Session`` by using the ``MongoDB\Client::startSession()`` +method on your ``Client`` instance. Then, you can use either of the +following APIs to perform a transaction: + +- :ref:`php-convenient-txn` +- :ref:`php-core-txn` + +.. _php-convenient-txn: + +Convenient API +~~~~~~~~~~~~~~ + +The {+php-library+} provides a **Convenient Transaction API** to manage +the transaction lifecyle. Implement this API by using the +``MongoDB\with_transaction()`` function to run custom callback within a +transaction. The ``with_transaction()`` function performs the following +tasks: + +- Starts the transaction +- Handles errors by either ending the transaction or retrying it, such + as when the operation returns a ``TransientTransactionError`` +- Commits the transaction + +The :ref:`php-txn-example` section of this guide demonstrates how to use this API to perform a transaction. +.. _php-core-txn: + +Core API +~~~~~~~~ + Alternatively, you can have more control over your transaction lifecyle by using the methods provided by the ``Session`` class. The following table describes these methods: @@ -82,8 +103,9 @@ following table describes these methods: * - ``commitTransaction()`` - | Commits the active transaction for this session. This method returns an - error if there is no active transaction for the session or the - transaction was previously ended. + error if there is no active transaction for the session, the + transaction was previously ended, or if there is a write + conflict. * - ``abortTransaction()`` - | Ends the active transaction for this session. This method returns an @@ -103,8 +125,8 @@ banking transaction. The code performs the following actions: collections. - Specifies the account number and amount to be transferred between accounts. -- Defines the callback function, passing the ``Session`` instance as a - parameter. +- Defines the callback function, which receives the ``Session`` instance + as a parameter. - Updates the customer's balances to reflect the money transfer. - Records a receipt of the transaction with a timestamp. - Prints a message if the transaction committed successfully. @@ -120,7 +142,7 @@ Then, run the following code to perform the transaction. This code completes the following actions: 1. Creates a session from the client by using the ``startSession()`` method. -#. Calls the ``with_transaction()`` method to manage the transaction, +#. Calls the ``with_transaction()`` function to manage the transaction, passing the session and the callback as parameters. .. io-code-block:: @@ -173,11 +195,7 @@ guide, see the following API documentation: To learn more about the ``Session`` class and methods, see the following {+extension-short+} API documentation: -- `MongoDB\\Driver\\Session - <{+php-manual+}/class.mongodb-driver-session.php>`__ -- `MongoDB\\Driver\\Session::abortTransaction() - <{+php-manual+}/mongodb-driver-session.aborttransaction.php>`__ -- `MongoDB\\Driver\\Session::commitTransaction() - <{+php-manual+}/mongodb-driver-session.committransaction.php>`__ -- `MongoDB\\Driver\\Session::startTransaction() - <{+php-manual+}/mongodb-driver-session.starttransaction.php>`__ +- :php:`MongoDB\Driver\Session ` +- :php:`MongoDB\Driver\Session::abortTransaction() ` +- :php:`MongoDB\Driver\Session::commitTransaction() ` +- :php:`MongoDB\Driver\Session::startTransaction() ` From d5a8d53d89655e58ff7c9bfd0427782a4817912f Mon Sep 17 00:00:00 2001 From: rustagir Date: Thu, 26 Sep 2024 15:35:09 -0400 Subject: [PATCH 10/11] remove dupe sc --- snooty.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/snooty.toml b/snooty.toml index 5f676f6e..d2d18efa 100644 --- a/snooty.toml +++ b/snooty.toml @@ -44,4 +44,3 @@ stable-api = "Stable API" library-short = "PHP library" api = "https://www.mongodb.com/docs/php-library/current/reference" php-manual = "https://www.php.net/manual/en" -extension-short = "PHP extension" From baf5e1324d3d241bd7a80b8129b2617c21733c97 Mon Sep 17 00:00:00 2001 From: rustagir Date: Fri, 27 Sep 2024 10:40:01 -0400 Subject: [PATCH 11/11] wrap fix --- source/write/transaction.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/write/transaction.txt b/source/write/transaction.txt index f5a12604..342be0e4 100644 --- a/source/write/transaction.txt +++ b/source/write/transaction.txt @@ -104,8 +104,7 @@ following table describes these methods: * - ``commitTransaction()`` - | Commits the active transaction for this session. This method returns an error if there is no active transaction for the session, the - transaction was previously ended, or if there is a write - conflict. + transaction was previously ended, or if there is a write conflict. * - ``abortTransaction()`` - | Ends the active transaction for this session. This method returns an