|
14 | 14 |
|
15 | 15 |
|
16 | 16 | def execute_batch(q, blobs, db, success_statuses: list[int] = [0], |
17 | | - response_handler: Callable = None, commands_per_query: int = 1, blobs_per_query: int = 0): |
| 17 | + response_handler: Callable = None, commands_per_query: int = 1, blobs_per_query: int = 0, |
| 18 | + strict_response_validation: bool = False): |
18 | 19 | """ |
19 | 20 | Execute a batch of queries, doing useful logging around it. |
20 | 21 | Calls the response handler if provided. |
@@ -64,6 +65,8 @@ def execute_batch(q, blobs, db, success_statuses: list[int] = [0], |
64 | 65 | b[blobs_returned:blobs_returned + b_count] if len(b) < blobs_returned + b_count else None) |
65 | 66 | except BaseException as e: |
66 | 67 | logger.exception(e) |
| 68 | + if strict_response_validation: |
| 69 | + raise e |
67 | 70 | blobs_returned += b_count |
68 | 71 | else: |
69 | 72 | # Transaction failed entirely. |
@@ -174,10 +177,20 @@ def process_responses(requests, input_blobs, responses, output_blobs): |
174 | 177 | worker_stats = {} |
175 | 178 | if not self.dry_run: |
176 | 179 | response_handler = None |
| 180 | + strict_response_validation = False |
177 | 181 | if hasattr(self.generator, "response_handler") and callable(self.generator.response_handler): |
178 | 182 | response_handler = self.generator.response_handler |
| 183 | + if hasattr(self.generator, "strict_response_validation") and isinstance(self.generator.strict_response_validation, bool): |
| 184 | + strict_response_validation = self.generator.strict_response_validation |
179 | 185 | result, r, b = execute_batch( |
180 | | - q, blobs, db, ParallelQuery.success_statuses, response_handler, self.commands_per_query, self.blobs_per_query) |
| 186 | + q, |
| 187 | + blobs, |
| 188 | + db, |
| 189 | + ParallelQuery.success_statuses, |
| 190 | + response_handler, |
| 191 | + self.commands_per_query, |
| 192 | + self.blobs_per_query, |
| 193 | + strict_response_validation=strict_response_validation) |
181 | 194 | if result == 0: |
182 | 195 | query_time = db.get_last_query_time() |
183 | 196 | worker_stats["suceeded_commands"] = len(q) |
|
0 commit comments