Skip to content

Commit ede9007

Browse files
kannon92mr-c
authored andcommitted
feat: auto generate unique id from stdout/stderr
1 parent 8159ed3 commit ede9007

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

cwltool/job.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ def relink_initialworkdir(
110110
def neverquote(string: str, pos: int = 0, endpos: int = 0) -> Optional[Match[str]]:
111111
return None
112112

113-
114113
CollectOutputsType = Union[Callable[[str, int], CWLObjectType], functools.partial]
115114

116115

@@ -227,6 +226,14 @@ def is_streamable(file: str) -> bool:
227226
indent=4,
228227
),
229228
)
229+
if runtimeContext.log_host == "":
230+
self.base_path_stdout_stderr = self.outdir
231+
else:
232+
self.base_path_stdout_stderr = runtimeContext.log_host
233+
# Generate random ids
234+
import uuid
235+
self.stdout = self.stdout if not self.stdout else self.stdout + uuid.uuid4().hex
236+
self.stderr = self.stderr if not self.stderr else self.stderr + uuid.uuid4().hex
230237

231238
def _execute(
232239
self,
@@ -267,9 +274,6 @@ def _execute(
267274
menv.pass_through_env_vars(env)
268275
menv.set_env_vars(env)
269276

270-
outdir_stdout_stderr = self.outdir if runtimeContext.log_host == "" else runtimeContext.log_host
271-
272-
273277
_logger.info(
274278
"[job %s] %s$ %s%s%s%s",
275279
self.name,
@@ -281,8 +285,8 @@ def _execute(
281285
]
282286
),
283287
" < %s" % self.stdin if self.stdin else "",
284-
" > %s" % os.path.join(outdir_stdout_stderr, self.stdout) if self.stdout else "",
285-
" 2> %s" % os.path.join(outdir_stdout_stderr, self.stderr) if self.stderr else "",
288+
" > %s" % os.path.join(self.base_path_stdout_stderr, self.stdout) if self.stdout else "",
289+
" 2> %s" % os.path.join(self.base_path_stdout_stderr, self.stderr) if self.stderr else "",
286290
)
287291
if self.joborder is not None and runtimeContext.research_obj is not None:
288292
job_order = self.joborder
@@ -311,22 +315,21 @@ def _execute(
311315
stdin_path = rmap[1]
312316

313317
stderr_path = None
314-
outdir_stdout_stderr = self.outdir if runtimeContext.log_host == "" else runtimeContext.log_host
315318
if self.stderr is not None:
316-
abserr = os.path.join(outdir_stdout_stderr, self.stderr)
319+
abserr = os.path.join(self.base_path_stdout_stderr, self.stderr)
317320
dnerr = os.path.dirname(abserr)
318321
if dnerr and not os.path.exists(dnerr):
319322
os.makedirs(dnerr)
320323
stderr_path = abserr
321324

322325
stdout_path = None
323326
if self.stdout is not None:
324-
absout = os.path.join(outdir_stdout_stderr, self.stdout)
327+
absout = os.path.join(self.base_path_stdout_stderr, self.stdout)
325328
dnout = os.path.dirname(absout)
326329
if dnout and not os.path.exists(dnout):
327330
os.makedirs(dnout)
328331
stdout_path = absout
329-
_logger.debug("stderr: %s stdout: %s hostdir: %s", stderr_path, stdout_path, outdir_stdout_stderr)
332+
_logger.debug("stderr: %s stdout: %s hostdir: %s", stderr_path, stdout_path, self.base_path_stdout_stderr)
330333
commands = [str(x) for x in runtime + self.command_line]
331334
if runtimeContext.secret_store is not None:
332335
commands = cast(

0 commit comments

Comments
 (0)