Skip to content
Snippets Groups Projects
Unverified Commit e2490297 authored by Andrej Shadura's avatar Andrej Shadura
Browse files

Catch, log and ignore OSError exceptions in job tracing code


Signed-off-by: default avatarAndrej Shadura <andrew.shadura@collabora.co.uk>
parent 2db7e378
No related branches found
No related tags found
1 merge request!34Don’t keep trace files open, reopen them each time
Pipeline #368317 passed with warnings
......@@ -14,6 +14,7 @@
from __future__ import annotations
import datetime
import logging
import shelve
from logging import debug, error, info
from pathlib import Path
......@@ -282,16 +283,20 @@ def job_trace(prefix: str, job_id: str, worker_id: str, text: str):
global job_traces
now = datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
if job_id in job_traces:
p = job_traces[job_id]
f = p.resolve().open('at')
else:
p = (config.tracedir / f"job.{now}.{job_id}.log").resolve()
f = p.open('at')
job_traces[job_id] = p
print(f"=== Traces for job {job_id}", file=f)
print(f"[{now}] {prefix} {worker_id}:{text}", file=f)
f.close()
try:
if job_id in job_traces:
p = job_traces[job_id]
f = p.resolve().open('at')
else:
p = (config.tracedir / f"job.{now}.{job_id}.log").resolve()
f = p.open('at')
job_traces[job_id] = p
print(f"=== Traces for job {job_id}", file=f)
print(f"[{now}] {prefix} {worker_id}:{text}", file=f)
f.close()
except OSError:
logging.exception("Ignoring exception in job_trace:")
pass
def job_alias(old_id: str, new_id: str):
......@@ -299,14 +304,18 @@ def job_alias(old_id: str, new_id: str):
return
global job_traces
if (old_id in job_traces) and (new_id not in job_traces):
p = job_traces[old_id]
now = datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
new_p = config.tracedir / f"job.{now}.{new_id}.log"
new_p.symlink_to(p.name)
job_traces[new_id] = new_p
with p.open('at') as f:
print(f"[{now}] === aliased new id {new_id} to old id {old_id}", file=f)
try:
if (old_id in job_traces) and (new_id not in job_traces):
p = job_traces[old_id]
now = datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
new_p = config.tracedir / f"job.{now}.{new_id}.log"
new_p.symlink_to(p.name)
job_traces[new_id] = new_p
with p.open('at') as f:
print(f"[{now}] === aliased new id {new_id} to old id {old_id}", file=f)
except OSError:
logging.exception("Ignoring exception in job_alias:")
pass
def open_cache(name: str):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment