From 337a42066fbccec8049c1f6ff96ef4095e39fc42 Mon Sep 17 00:00:00 2001 From: "anthony.wen" Date: Thu, 26 Mar 2026 19:43:06 -0400 Subject: [PATCH] Handle alternate grouped-run completion logs in ATVM watcher - update the categorized watcher to recognize grouped Cloud Run Finished summaries that are followed by the controller log message as well as the older literal form - allow grouped host summaries like the multi-host ubuntu batch to be parsed and posted even when the alternate controller log format is used - prevent completed grouped runs from being left in RUNNING state solely because the watcher missed the alternate grouped summary terminator --- atvm/watcher-service/atvm_run_watcher.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/atvm/watcher-service/atvm_run_watcher.py b/atvm/watcher-service/atvm_run_watcher.py index aff180e..7aa8f9f 100644 --- a/atvm/watcher-service/atvm_run_watcher.py +++ b/atvm/watcher-service/atvm_run_watcher.py @@ -276,7 +276,13 @@ def parse_duration_seconds(raw: str) -> Optional[float]: def extract_completed_subrun_summaries(log_text: str, inventory: Dict[str, str]) -> List[Dict[str, object]]: summaries: List[Dict[str, object]] = [] - cloud_blocks = list(re.finditer(r"Cloud Run Finished(.*?)(?:🏁 Recorded Run:\s*(https://\S+))", log_text, re.S)) + cloud_blocks = list( + re.finditer( + r"Cloud Run Finished(.*?)(?:🏁 Recorded Run:\s*(https://\S+)|\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3} - INFO - Detected 'Recorded Run' after 'Cloud Run Finished' - results uploaded successfully\.)", + log_text, + re.S, + ) + ) for block in cloud_blocks: block_text = block.group(1) currents_url = block.group(2)