5050from google .cloud .spanner_v1 import SpannerClient
5151from google .cloud .spanner_v1 ._helpers import _merge_query_options
5252from google .cloud .spanner_v1 ._helpers import (
53+ AtomicInt ,
5354 _metadata_with_prefix ,
5455 _metadata_with_leader_aware_routing ,
5556)
@@ -693,8 +694,15 @@ def execute_partitioned_dml(
693694 _metadata_with_leader_aware_routing (self ._route_to_leader_enabled )
694695 )
695696
697+ nth_request = self ._next_nth_request ()
698+ attempt = AtomicInt (1 ) # It'll be incremented inside _restart_on_unavailable
699+
696700 def execute_pdml ():
697701 with SessionCheckout (self ._pool ) as session :
702+ channel_id = session ._channel_id
703+ metadata = with_request_id (
704+ self ._client ._nth_client_id , nth_request , attempt .value , metadata
705+ )
698706 txn = api .begin_transaction (
699707 session = session .name , options = txn_options , metadata = metadata
700708 )
@@ -719,6 +727,7 @@ def execute_pdml():
719727 request = request ,
720728 transaction_selector = txn_selector ,
721729 observability_options = self .observability_options ,
730+ attempt = attempt ,
722731 )
723732
724733 result_set = StreamedResultSet (iterator )
@@ -728,6 +737,9 @@ def execute_pdml():
728737
729738 return _retry_on_aborted (execute_pdml , DEFAULT_RETRY_BACKOFF )()
730739
740+ def _next_nth_request (self ):
741+ return self ._instance ._client ._next_nth_request
742+
731743 def session (self , labels = None , database_role = None ):
732744 """Factory to create a session for this database.
733745
0 commit comments