Skip to content

Commit 5e5ea7e

Browse files
requested reducer changes
1 parent d114b2a commit 5e5ea7e

2 files changed

Lines changed: 16 additions & 7 deletions

File tree

components/job-orchestration/job_orchestration/executor/query/utils.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import signal
44
import subprocess
55
import sys
6+
import logging
67
from contextlib import closing
78
from logging import Logger
89
from pathlib import Path
@@ -101,6 +102,8 @@ def sigterm_handler(_signo, _stack_frame):
101102
clo_log_file.close()
102103
if 0 != return_code:
103104
log_file_contents(logger, clo_log_path)
105+
else:
106+
log_file_contents(logger, clo_log_path, logging.INFO)
104107
duration = (datetime.datetime.now() - start_time).total_seconds()
105108

106109
update_query_task_metadata(

components/job-orchestration/job_orchestration/reducer/reducer.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import os
55
import subprocess
66
import sys
7+
from concurrent.futures import ThreadPoolExecutor, as_completed
78
from pathlib import Path
89
from typing import TextIO
910
import logging
@@ -92,13 +93,18 @@ def main(argv: list[str]) -> int:
9293
f" Concurrency={concurrency}"
9394
f" Upsert Interval={parsed_args.upsert_interval}"
9495
)
95-
for i, reducer in enumerate(reducers):
96-
reducer.communicate()
97-
logger.info(f"reducer-{i} exited with returncode={reducer.returncode}")
98-
for i, reducer_log_file in enumerate(reducer_log_files):
99-
reducer_log_file.close()
100-
log_file_path = logs_dir / f"reducer-{i}.log"
101-
log_file_contents(logger, log_file_path, logging.INFO)
96+
with ThreadPoolExecutor(max_workers=concurrency) as executor:
97+
futures = {
98+
executor.submit(reducers[i].communicate): i for i in range(concurrency)
99+
}
100+
for future in as_completed(futures):
101+
i = futures[future]
102+
future.result()
103+
logger.info(f"reducer-{i} exited with returncode={reducers[i].returncode}")
104+
if logs_dir is not None:
105+
reducer_log_files[i].close()
106+
log_file_path = logs_dir / f"reducer-{i}.log"
107+
log_file_contents(logger, log_file_path, logging.INFO)
102108

103109
logger.error("All reducers terminated")
104110

0 commit comments

Comments
 (0)