fix: transaction_tag should be set on BeginTransactionRequest (#1463) · googleapis/python-spanner@3d3cea0

@@ -901,13 +901,19 @@ def attempt_tracking_method():

901901902902

return [partition.partition_token for partition in response.partitions]

903903904-

def _begin_transaction(self, mutation: Mutation = None) -> bytes:

904+

def _begin_transaction(

905+

self, mutation: Mutation = None, transaction_tag: str = None

906+

) -> bytes:

905907

"""Begins a transaction on the database.

906908907909

:type mutation: :class:`~google.cloud.spanner_v1.mutation.Mutation`

908910

:param mutation: (Optional) Mutation to include in the begin transaction

909911

request. Required for mutation-only transactions with multiplexed sessions.

910912913+

:type transaction_tag: str

914+

:param transaction_tag: (Optional) Transaction tag to include in the begin transaction

915+

request.

916+911917

:rtype: bytes

912918

:returns: identifier for the transaction.

913919

@@ -931,6 +937,17 @@ def _begin_transaction(self, mutation: Mutation = None) -> bytes:

931937

(_metadata_with_leader_aware_routing(database._route_to_leader_enabled))

932938

)

933939940+

begin_request_kwargs = {

941+

"session": session.name,

942+

"options": self._build_transaction_selector_pb().begin,

943+

"mutation_key": mutation,

944+

}

945+946+

if transaction_tag:

947+

begin_request_kwargs["request_options"] = RequestOptions(

948+

transaction_tag=transaction_tag

949+

)

950+934951

with trace_call(

935952

name=f"CloudSpanner.{type(self).__name__}.begin",

936953

session=session,

@@ -942,9 +959,7 @@ def _begin_transaction(self, mutation: Mutation = None) -> bytes:

942959943960

def wrapped_method():

944961

begin_transaction_request = BeginTransactionRequest(

945-

session=session.name,

946-

options=self._build_transaction_selector_pb().begin,

947-

mutation_key=mutation,

962+

**begin_request_kwargs

948963

)

949964

begin_transaction_method = functools.partial(

950965

api.begin_transaction,