Skip to content
This repository was archived by the owner on Mar 31, 2026. It is now read-only.

Commit cd5b1f8

Browse files
committed
chore: add samples for transaction timeout configuration
1 parent b433281 commit cd5b1f8

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

samples/samples/snippets.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2509,6 +2509,35 @@ def update_venues(transaction):
25092509

25102510
# [END spanner_set_transaction_tag]
25112511

2512+
def set_transaction_timeout(instance_id, database_id):
2513+
"""Executes a transaction with a transaction timeout."""
2514+
# [START spanner_transaction_timeout]
2515+
# instance_id = "your-spanner-instance"
2516+
# database_id = "your-spanner-db-id"
2517+
spanner_client = spanner.Client()
2518+
instance = spanner_client.instance(instance_id)
2519+
database = instance.database(database_id)
2520+
2521+
def read_then_write(transaction):
2522+
# Read records.
2523+
results = transaction.execute_sql(
2524+
"SELECT SingerId, FirstName, LastName FROM Singers ORDER BY LastName, FirstName"
2525+
)
2526+
for result in results:
2527+
print("SingerId: {}, FirstName: {}, LastName: {}".format(*result))
2528+
2529+
# Insert a record.
2530+
row_ct = transaction.execute_update(
2531+
"INSERT INTO Singers (SingerId, FirstName, LastName) "
2532+
" VALUES (100, 'George', 'Washington')"
2533+
)
2534+
print("{} record(s) inserted.".format(row_ct))
2535+
2536+
2537+
2538+
database.run_in_transaction(read_then_write, timeout_secs=60)
2539+
2540+
# [END spanner_transaction_timeout]
25122541

25132542
def set_request_tag(instance_id, database_id):
25142543
"""Executes a snapshot read with a request tag."""
@@ -3617,6 +3646,7 @@ def add_split_points(instance_id, database_id):
36173646
subparsers.add_parser("add_column", help=add_column.__doc__)
36183647
subparsers.add_parser("update_data", help=update_data.__doc__)
36193648
subparsers.add_parser("set_max_commit_delay", help=set_max_commit_delay.__doc__)
3649+
subparsers.add_parser("set_transaction_timeout", help=set_transaction_timeout.__doc__)
36203650
subparsers.add_parser(
36213651
"query_data_with_new_column", help=query_data_with_new_column.__doc__
36223652
)
@@ -3783,6 +3813,8 @@ def add_split_points(instance_id, database_id):
37833813
update_data(args.instance_id, args.database_id)
37843814
elif args.command == "set_max_commit_delay":
37853815
set_max_commit_delay(args.instance_id, args.database_id)
3816+
elif args.command == "set_transaction_timeout":
3817+
set_transaction_timeout(args.instance_id, args.database_id)
37863818
elif args.command == "query_data_with_new_column":
37873819
query_data_with_new_column(args.instance_id, args.database_id)
37883820
elif args.command == "read_write_transaction":

samples/samples/snippets_test.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -854,6 +854,11 @@ def test_set_transaction_tag(capsys, instance_id, sample_database):
854854
assert "Venue capacities updated." in out
855855
assert "New venue inserted." in out
856856

857+
@pytest.mark.dependency(depends=["insert_datatypes_data"])
858+
def test_set_transaction_timeout(capsys, instance_id, sample_database):
859+
snippets.set_transaction_timeout(instance_id, sample_database.database_id)
860+
out, _ = capsys.readouterr()
861+
assert "1 record(s) inserted." in out
857862

858863
@pytest.mark.dependency(depends=["insert_data"])
859864
def test_set_request_tag(capsys, instance_id, sample_database):

0 commit comments

Comments
 (0)