worker: cover goal docker paths with prestart stage logging
PR #145 added docker_run_* lines only to _run_in_container, but goal/goal-resume/goal-resume-breakpoint call _call_runner directly (to keep full stdout for goal conclusions), so the production live test (a goal task) produced zero docker_run_ lines. Extract a _docker_call_staged helper and route all four task paths through it; error lines log the class name then re-raise so each caller's kill+failed handling is unchanged. Also fix audit attribution: audit_log has no task_id column, and worker_exec_done/error details carried no task id, so per-task queries missed them (the rows existed). All three exec details now start with task_id=. Tests: 2 new goal-path stage cases + a done detail task-id assertion (8 total in test_prestart_stages).
This commit is contained in:
1 parent
a17f0c7412
commit
6f0eec71b6
3 files changed
+76
-28
No files matched your search
+6
-6
@@ -3560,8 +3560,8 @@ class Worker:
|
||||
_exec_container = None
|
||||
_exec_t0 = time.time()
|
||||
_exec_error = None
|
||||
_exec_detail = "kind=%s executor=%s timeout=%s" % (
|
||||
_exec_kind, self._executor_name(),
|
||||
_exec_detail = "task_id=%s kind=%s executor=%s timeout=%s" % (
|
||||
task_id, _exec_kind, self._executor_name(),
|
||||
"None" if _effective_task_timeout is None
|
||||
else _effective_task_timeout)
|
||||
if _exec_container:
|
||||
@@ -3797,8 +3797,8 @@ class Worker:
|
||||
_exec_elapsed_ms = int((time.time() - _exec_t0) * 1000)
|
||||
if _exec_error is not None:
|
||||
self._audit(task.get("project_id"), "worker_exec_error",
|
||||
"elapsed_ms=%d error=%s"
|
||||
% (_exec_elapsed_ms,
|
||||
"task_id=%s elapsed_ms=%d error=%s"
|
||||
% (task_id, _exec_elapsed_ms,
|
||||
_exec_error.__class__.__name__))
|
||||
log_event(self.logger, "worker_exec_error", task_id=task_id,
|
||||
message="worker exec error: elapsed_ms=%d error=%s"
|
||||
@@ -3806,8 +3806,8 @@ class Worker:
|
||||
_exec_error.__class__.__name__))
|
||||
else:
|
||||
self._audit(task.get("project_id"), "worker_exec_done",
|
||||
"elapsed_ms=%d status=%s returncode=%s"
|
||||
% (_exec_elapsed_ms, result.get("status"),
|
||||
"task_id=%s elapsed_ms=%d status=%s returncode=%s"
|
||||
% (task_id, _exec_elapsed_ms, result.get("status"),
|
||||
result.get("returncode")))
|
||||
log_event(self.logger, "worker_exec_done", task_id=task_id,
|
||||
status=result.get("status"),
|
||||
|
||||
Reference in new issue
Block a user