Skip to content

Commit 5f0b115

Browse files
committed
for testing purposes
1 parent e52b015 commit 5f0b115

3 files changed

Lines changed: 35 additions & 23 deletions

File tree

packages/google-cloud-bigtable/tests/system/data/test_system_async.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,26 @@ async def add_aggregate_row(
107107
@CrossSync.convert
108108
async def delete_rows(self):
109109
if self.rows:
110-
request = {
111-
"table_name": self.target.table_name,
112-
"entries": [
113-
{"row_key": row, "mutations": [{"delete_from_row": {}}]}
114-
for row in self.rows
115-
],
116-
}
117-
await self.target.client._gapic_client.mutate_rows(request)
110+
# Chunk deletions to 5,000 rows. While Bigtable officially supports up to
111+
# 100,000 mutations per MutateRows RPC, sending massive batches may hit
112+
# the default gRPC 4MB client payload size limit due to metadata
113+
# serialization overhead. Keeping chunks at 5,000 ensures we stay safely
114+
# under 4MB and minimizes transient network timeouts on live connections.
115+
chunk_size = 5000
116+
for i in range(0, len(self.rows), chunk_size):
117+
chunk = self.rows[i : i + chunk_size]
118+
request = {
119+
**self.target._request_path,
120+
"entries": [
121+
{"row_key": row, "mutations": [{"delete_from_row": {}}]}
122+
for row in chunk
123+
],
124+
}
125+
# Await and consume the gRPC stream to guarantee execution
126+
stream = await self.target.client._gapic_client.mutate_rows(request)
127+
async for response in stream:
128+
pass
129+
118130

119131
@CrossSync.convert
120132
async def retrieve_cell_value(self, target, row_key):

packages/google-cloud-bigtable/tests/system/data/test_system_autogen.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,19 @@ def add_aggregate_row(
9494

9595
def delete_rows(self):
9696
if self.rows:
97-
request = {
98-
"table_name": self.target.table_name,
99-
"entries": [
100-
{"row_key": row, "mutations": [{"delete_from_row": {}}]}
101-
for row in self.rows
102-
],
103-
}
104-
self.target.client._gapic_client.mutate_rows(request)
97+
chunk_size = 5000
98+
for i in range(0, len(self.rows), chunk_size):
99+
chunk = self.rows[i : i + chunk_size]
100+
request = {
101+
**self.target._request_path,
102+
"entries": [
103+
{"row_key": row, "mutations": [{"delete_from_row": {}}]}
104+
for row in chunk
105+
],
106+
}
107+
stream = self.target.client._gapic_client.mutate_rows(request)
108+
for response in stream:
109+
pass
105110

106111
def retrieve_cell_value(self, target, row_key):
107112
"""Helper to read an individual row"""

packages/google-cloud-bigtable/tests/unit/data/_sync_autogen/test_client.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2998,15 +2998,11 @@ def test_execute_query_with_params(self, client, execute_query_mock, prepare_moc
29982998
def test_execute_query_with_view_parameters(
29992999
self, client, execute_query_mock, prepare_mock
30003000
):
3001-
values = [
3002-
*chunked_responses(2, str_val("test2"), int_val(9), token=b"r2"),
3003-
]
3001+
values = [*chunked_responses(2, str_val("test2"), int_val(9), token=b"r2")]
30043002
execute_query_mock.return_value = self._make_gapic_stream(values)
30053003
query_str = f"SELECT a, b FROM {self.TABLE_NAME} WHERE user_id = VIEW_PARAMETERS('user_id')"
30063004
result = client.execute_query(
3007-
query_str,
3008-
self.INSTANCE_NAME,
3009-
view_parameters={"user_id": "alice"},
3005+
query_str, self.INSTANCE_NAME, view_parameters={"user_id": "alice"}
30103006
)
30113007
results = [r for r in result]
30123008
assert len(results) == 1
@@ -3015,7 +3011,6 @@ def test_execute_query_with_view_parameters(
30153011
assert execute_query_mock.call_count == 1
30163012
assert prepare_mock.call_count == 1
30173013
assert prepare_mock.call_args[1]["request"]["query"] == query_str
3018-
30193014
request = execute_query_mock.call_args[0][0]
30203015
assert "user_id" in request.view_parameters
30213016
assert request.view_parameters["user_id"].string_value == "alice"

0 commit comments

Comments
 (0)