fix: transaction_tag should be set on BeginTransactionRequest (#1463) · googleapis/python-spanner@3d3cea0
@@ -901,13 +901,19 @@ def attempt_tracking_method():
901901902902return [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+934951with trace_call(
935952name=f"CloudSpanner.{type(self).__name__}.begin",
936953session=session,
@@ -942,9 +959,7 @@ def _begin_transaction(self, mutation: Mutation = None) -> bytes:
942959943960def wrapped_method():
944961begin_transaction_request = BeginTransactionRequest(
945-session=session.name,
946-options=self._build_transaction_selector_pb().begin,
947-mutation_key=mutation,
962+**begin_request_kwargs
948963 )
949964begin_transaction_method = functools.partial(
950965api.begin_transaction,