3838 _retry ,
3939 _check_rst_stream_error ,
4040 _SessionWrapper ,
41+ AtomicCounter ,
4142)
4243from google .cloud .spanner_v1 ._opentelemetry_tracing import trace_call
4344from google .cloud .spanner_v1 .streamed import StreamedResultSet
@@ -82,11 +83,6 @@ def _restart_on_unavailable(
8283 resume_token = b""
8384 item_buffer = []
8485
85- def next_nth_request ():
86- return getattr (request_id_manager , "_next_nth_request" , 0 )
87-
88- nth_request = next_nth_request ()
89-
9086 if transaction is not None :
9187 transaction_selector = transaction ._make_txn_selector ()
9288 elif transaction_selector is None :
@@ -96,7 +92,8 @@ def next_nth_request():
9692
9793 request .transaction = transaction_selector
9894 iterator = None
99- attempt = 0
95+ attempt = 1
96+ nth_request = getattr (request_id_manager , "_next_nth_request" , 0 )
10097
10198 while True :
10299 try :
@@ -108,7 +105,6 @@ def next_nth_request():
108105 observability_options = observability_options ,
109106 metadata = metadata ,
110107 ), MetricsCapture ():
111- attempt += 1
112108 iterator = method (
113109 request = request ,
114110 metadata = request_id_manager .metadata_with_request_id (
@@ -142,8 +138,7 @@ def next_nth_request():
142138 if transaction is not None :
143139 transaction_selector = transaction ._make_txn_selector ()
144140 request .transaction = transaction_selector
145- nth_request = next_nth_request ()
146- attempt = 1
141+ attempt += 1
147142 iterator = method (
148143 request = request ,
149144 metadata = request_id_manager .metadata_with_request_id (
@@ -169,8 +164,7 @@ def next_nth_request():
169164 request .resume_token = resume_token
170165 if transaction is not None :
171166 transaction_selector = transaction ._make_txn_selector ()
172- nth_request = next_nth_request ()
173- attempt = 1
167+ attempt += 1
174168 request .transaction = transaction_selector
175169 iterator = method (
176170 request = request ,
@@ -753,12 +747,11 @@ def partition_read(
753747 metadata = metadata ,
754748 ), MetricsCapture ():
755749 nth_request = getattr (database , "_next_nth_request" , 0 )
756- counters = dict ( attempt = 0 )
750+ attempt = AtomicCounter ( )
757751
758752 def attempt_tracking_method ():
759- counters ["attempt" ] += 1
760753 all_metadata = database .metadata_with_request_id (
761- nth_request , counters [ " attempt" ] , metadata
754+ nth_request , attempt . increment () , metadata
762755 )
763756 method = functools .partial (
764757 api .partition_read ,
@@ -867,12 +860,11 @@ def partition_query(
867860 metadata = metadata ,
868861 ), MetricsCapture ():
869862 nth_request = getattr (database , "_next_nth_request" , 0 )
870- counters = dict ( attempt = 0 )
863+ attempt = AtomicCounter ( )
871864
872865 def attempt_tracking_method ():
873- counters ["attempt" ] += 1
874866 all_metadata = database .metadata_with_request_id (
875- nth_request , counters [ " attempt" ] , metadata
867+ nth_request , attempt . increment () , metadata
876868 )
877869 method = functools .partial (
878870 api .partition_query ,
@@ -1024,12 +1016,11 @@ def begin(self):
10241016 metadata = metadata ,
10251017 ), MetricsCapture ():
10261018 nth_request = getattr (database , "_next_nth_request" , 0 )
1027- counters = dict ( attempt = 0 )
1019+ attempt = AtomicCounter ( )
10281020
10291021 def attempt_tracking_method ():
1030- counters ["attempt" ] += 1
10311022 all_metadata = database .metadata_with_request_id (
1032- nth_request , counters [ " attempt" ] , metadata
1023+ nth_request , attempt . increment () , metadata
10331024 )
10341025 method = functools .partial (
10351026 api .begin_transaction ,
0 commit comments