@@ -71,7 +71,20 @@ def _make_database(name=DATABASE_NAME, database_role=None):
71
71
database .log_commit_stats = False
72
72
database .database_role = database_role
73
73
database ._route_to_leader_enabled = True
74
- database .NTH_CLIENT = AtomicCounter ()
74
+ nth_client_id = AtomicCounter (1 )
75
+ database .NTH_CLIENT = nth_client_id
76
+ next_nth_request = AtomicCounter (1 )
77
+
78
+ def metadata_with_request_id (nth_request , nth_attempt , prior_metadata = []):
79
+ return _metadata_with_request_id (
80
+ nth_client_id .value ,
81
+ 1 ,
82
+ next_nth_request .increment (),
83
+ nth_attempt ,
84
+ prior_metadata ,
85
+ )
86
+
87
+ database .metadata_with_request_id = metadata_with_request_id
75
88
return database
76
89
77
90
@staticmethod
@@ -1095,6 +1108,10 @@ def unit_of_work(txn, *args, **kw):
1095
1108
metadata = [
1096
1109
("google-cloud-resource-prefix" , database .name ),
1097
1110
("x-goog-spanner-route-to-leader" , "true" ),
1111
+ (
1112
+ "x-goog-spanner-request-id" ,
1113
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.2.1" ,
1114
+ ),
1098
1115
],
1099
1116
)
1100
1117
@@ -1157,10 +1174,25 @@ def unit_of_work(txn, *args, **kw):
1157
1174
metadata = [
1158
1175
("google-cloud-resource-prefix" , database .name ),
1159
1176
("x-goog-spanner-route-to-leader" , "true" ),
1177
+ (
1178
+ "x-goog-spanner-request-id" ,
1179
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.2.1" ,
1180
+ ),
1160
1181
],
1161
- )
1162
- ]
1163
- * 2 ,
1182
+ ),
1183
+ mock .call (
1184
+ session = self .SESSION_NAME ,
1185
+ options = expected_options ,
1186
+ metadata = [
1187
+ ("google-cloud-resource-prefix" , database .name ),
1188
+ ("x-goog-spanner-route-to-leader" , "true" ),
1189
+ (
1190
+ "x-goog-spanner-request-id" ,
1191
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.2.2" ,
1192
+ ),
1193
+ ],
1194
+ ),
1195
+ ],
1164
1196
)
1165
1197
request = CommitRequest (
1166
1198
session = self .SESSION_NAME ,
@@ -1176,10 +1208,24 @@ def unit_of_work(txn, *args, **kw):
1176
1208
metadata = [
1177
1209
("google-cloud-resource-prefix" , database .name ),
1178
1210
("x-goog-spanner-route-to-leader" , "true" ),
1211
+ (
1212
+ "x-goog-spanner-request-id" ,
1213
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.3.1" ,
1214
+ ),
1179
1215
],
1180
- )
1181
- ]
1182
- * 2 ,
1216
+ ),
1217
+ mock .call (
1218
+ request = request ,
1219
+ metadata = [
1220
+ ("google-cloud-resource-prefix" , database .name ),
1221
+ ("x-goog-spanner-route-to-leader" , "true" ),
1222
+ (
1223
+ "x-goog-spanner-request-id" ,
1224
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.3.2" ,
1225
+ ),
1226
+ ],
1227
+ ),
1228
+ ],
1183
1229
)
1184
1230
1185
1231
def test_run_in_transaction_w_abort_w_retry_metadata (self ):
@@ -1524,6 +1570,10 @@ def _time(_results=[1, 2, 4, 8]):
1524
1570
metadata = [
1525
1571
("google-cloud-resource-prefix" , database .name ),
1526
1572
("x-goog-spanner-route-to-leader" , "true" ),
1573
+ (
1574
+ "x-goog-spanner-request-id" ,
1575
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.2.1" ,
1576
+ ),
1527
1577
],
1528
1578
)
1529
1579
]
@@ -1543,6 +1593,10 @@ def _time(_results=[1, 2, 4, 8]):
1543
1593
metadata = [
1544
1594
("google-cloud-resource-prefix" , database .name ),
1545
1595
("x-goog-spanner-route-to-leader" , "true" ),
1596
+ (
1597
+ "x-goog-spanner-request-id" ,
1598
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.3.1" ,
1599
+ ),
1546
1600
],
1547
1601
)
1548
1602
]
@@ -1606,6 +1660,10 @@ def unit_of_work(txn, *args, **kw):
1606
1660
metadata = [
1607
1661
("google-cloud-resource-prefix" , database .name ),
1608
1662
("x-goog-spanner-route-to-leader" , "true" ),
1663
+ (
1664
+ "x-goog-spanner-request-id" ,
1665
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.2.1" ,
1666
+ ),
1609
1667
],
1610
1668
)
1611
1669
request = CommitRequest (
@@ -1620,6 +1678,10 @@ def unit_of_work(txn, *args, **kw):
1620
1678
metadata = [
1621
1679
("google-cloud-resource-prefix" , database .name ),
1622
1680
("x-goog-spanner-route-to-leader" , "true" ),
1681
+ (
1682
+ "x-goog-spanner-request-id" ,
1683
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.3.1" ,
1684
+ ),
1623
1685
],
1624
1686
)
1625
1687
database .logger .info .assert_called_once_with (
@@ -1676,6 +1738,10 @@ def unit_of_work(txn, *args, **kw):
1676
1738
metadata = [
1677
1739
("google-cloud-resource-prefix" , database .name ),
1678
1740
("x-goog-spanner-route-to-leader" , "true" ),
1741
+ (
1742
+ "x-goog-spanner-request-id" ,
1743
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.2.1" ,
1744
+ ),
1679
1745
],
1680
1746
)
1681
1747
request = CommitRequest (
@@ -1690,6 +1756,10 @@ def unit_of_work(txn, *args, **kw):
1690
1756
metadata = [
1691
1757
("google-cloud-resource-prefix" , database .name ),
1692
1758
("x-goog-spanner-route-to-leader" , "true" ),
1759
+ (
1760
+ "x-goog-spanner-request-id" ,
1761
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.3.1" ,
1762
+ ),
1693
1763
],
1694
1764
)
1695
1765
database .logger .info .assert_not_called ()
@@ -1753,6 +1823,10 @@ def unit_of_work(txn, *args, **kw):
1753
1823
metadata = [
1754
1824
("google-cloud-resource-prefix" , database .name ),
1755
1825
("x-goog-spanner-route-to-leader" , "true" ),
1826
+ (
1827
+ "x-goog-spanner-request-id" ,
1828
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.2.1" ,
1829
+ ),
1756
1830
],
1757
1831
)
1758
1832
request = CommitRequest (
@@ -1768,7 +1842,7 @@ def unit_of_work(txn, *args, **kw):
1768
1842
("x-goog-spanner-route-to-leader" , "true" ),
1769
1843
(
1770
1844
"x-goog-spanner-request-id" ,
1771
- f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.1 .1" ,
1845
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.3 .1" ,
1772
1846
),
1773
1847
],
1774
1848
)
@@ -1835,7 +1909,7 @@ def unit_of_work(txn, *args, **kw):
1835
1909
("x-goog-spanner-route-to-leader" , "true" ),
1836
1910
(
1837
1911
"x-goog-spanner-request-id" ,
1838
- f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.1 .1" ,
1912
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.2 .1" ,
1839
1913
),
1840
1914
],
1841
1915
)
@@ -1852,7 +1926,7 @@ def unit_of_work(txn, *args, **kw):
1852
1926
("x-goog-spanner-route-to-leader" , "true" ),
1853
1927
(
1854
1928
"x-goog-spanner-request-id" ,
1855
- f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.1 .1" ,
1929
+ f"1.{ REQ_RAND_PROCESS_ID } .{ database .NTH_CLIENT .value } .1.3 .1" ,
1856
1930
),
1857
1931
],
1858
1932
)
0 commit comments