@@ -1074,83 +1074,6 @@ def callback(session):
10741074
10751075 # End Transactions withTxn API Example 1
10761076
1077- @client_context .require_transactions
1078- def test_transactions_beta (self ):
1079- # Transaction beta examples
1080- client = self .client
1081- self .addCleanup (client .drop_database , "test" )
1082-
1083- db = client .test
1084- shipment = db .create_collection ("shipment" )
1085- inventory = db .create_collection ("inventory" )
1086- inventory .insert_one ({"sku" : "abc123" , "qty" : 500 })
1087-
1088- # Start Beta Transaction Example 1
1089- db = client .test
1090- with client .start_session () as s :
1091- with s .start_transaction ():
1092- db .inventory .update_one ({'sku' : 'abc123' },
1093- {'$inc' : {'qty' : - 100 }},
1094- session = s )
1095- db .shipment .insert_one ({'sku' : 'abc123' , 'qty' : 100 },
1096- session = s )
1097- # End Beta Transaction Example 1
1098-
1099- # Beta Transaction Example 1 with explicit start, commit, and abort.
1100- with client .start_session () as s :
1101- s .start_transaction ()
1102- try :
1103- db .inventory .update_one ({'sku' : 'abc123' },
1104- {'$inc' : {'qty' : - 100 }},
1105- session = s )
1106- db .shipment .insert_one ({'sku' : 'abc123' , 'qty' : 100 },
1107- session = s )
1108- except Exception :
1109- s .abort_transaction ()
1110- raise
1111- s .commit_transaction ()
1112-
1113- # Start Beta Transaction Example 2
1114- db = client .test
1115- shipment = db .get_collection ('shipment' ,
1116- write_concern = WriteConcern (w = 'majority' ))
1117-
1118- # In the following block, the following write concerns are used:
1119- # the update_one and insert_one operations uses w = 1,
1120- # the transaction commit/abort uses w = 'majority'.
1121- with client .start_session () as s :
1122- with s .start_transaction (write_concern = WriteConcern (w = 'majority' )):
1123- inventory .update_one ({'sku' : 'abc123' },
1124- {'$inc' : {'qty' : - 100 }},
1125- session = s )
1126- shipment .insert_one ({'sku' : 'abc123' , 'qty' : 100 }, session = s )
1127- # End Beta Transaction Example 2
1128-
1129- # Start Beta Transaction Example 3
1130- def run_transaction (session , txn_callback ):
1131- with session .start_transaction ():
1132- txn_callback (session )
1133-
1134- def run_transaction_with_retry (session , txn_callback ):
1135- try :
1136- run_transaction (session , txn_callback )
1137- except (OperationFailure , ConnectionFailure ) as exc :
1138- if exc .has_error_label ("TransientTransactionError" ):
1139- # Retry the entire transaction on temporary transaction
1140- # failures.
1141- run_transaction (session , txn_callback )
1142- else :
1143- raise
1144-
1145- def shipment_transaction (session ):
1146- inventory .update_one ({'sku' : 'abc123' }, {'$inc' : {'qty' : - 100 }},
1147- session = session )
1148- shipment .insert_one ({'sku' : 'abc123' , 'qty' : 100 }, session = session )
1149-
1150- with client .start_session () as session :
1151- run_transaction_with_retry (session , shipment_transaction )
1152- # End Beta Transaction Example 3
1153-
11541077
11551078class TestCausalConsistencyExamples (IntegrationTest ):
11561079 @client_context .require_version_min (3 , 6 , 0 )
0 commit comments