diff --git a/backend/src/main/scala/cromwell/backend/io/JobPaths.scala b/backend/src/main/scala/cromwell/backend/io/JobPaths.scala index d7c36f409b7..ca2801d203a 100644 --- a/backend/src/main/scala/cromwell/backend/io/JobPaths.scala +++ b/backend/src/main/scala/cromwell/backend/io/JobPaths.scala @@ -14,6 +14,7 @@ object JobPaths { val ScriptPathKey = "script" val StdoutPathKey = "stdout" val StdErrPathKey = "stderr" + val TaskLogPathKey = "taskLog" val ReturnCodePathKey = "returnCode" val CallRootPathKey = "callRootPath" val DockerCidPathKey = "dockerCidPath" @@ -45,6 +46,7 @@ trait JobPaths { def defaultStderrFilename = "stderr" def defaultTaskLogFilename = "task.log" def isDocker: Boolean = false + def implementsTaskLogging: Boolean = false // In this non-Docker version of `JobPaths` there is no distinction between host and container roots so this is // just called 'rootWithSlash'. @@ -87,9 +89,8 @@ trait JobPaths { // standard output and error file names. def standardOutputAndErrorPaths: Map[String, Path] = Map( CallMetadataKeys.Stdout -> standardPaths.output, - CallMetadataKeys.Stderr -> standardPaths.error, - CallMetadataKeys.TaskLog -> standardPaths.taskLog - ) + CallMetadataKeys.Stderr -> standardPaths.error + ) ++ (if (implementsTaskLogging) Map(CallMetadataKeys.TaskLog -> standardPaths.taskLog) else Map.empty) private lazy val commonMetadataPaths: Map[String, Path] = standardOutputAndErrorPaths + (CallMetadataKeys.CallRoot -> callRoot) @@ -102,7 +103,7 @@ trait JobPaths { JobPaths.StdoutPathKey -> standardPaths.output, JobPaths.StdErrPathKey -> standardPaths.error, JobPaths.ReturnCodePathKey -> returnCode - ) + ) ++ (if (implementsTaskLogging) Map(JobPaths.TaskLogPathKey -> standardPaths.taskLog) else Map.empty) private lazy val commonLogPaths: Map[String, Path] = Map( JobPaths.StdoutPathKey -> standardPaths.output, diff --git a/backend/src/main/scala/cromwell/backend/standard/StandardAsyncExecutionActor.scala b/backend/src/main/scala/cromwell/backend/standard/StandardAsyncExecutionActor.scala index 1928f2c52e1..cc8c9c8c217 100644 --- a/backend/src/main/scala/cromwell/backend/standard/StandardAsyncExecutionActor.scala +++ b/backend/src/main/scala/cromwell/backend/standard/StandardAsyncExecutionActor.scala @@ -501,7 +501,7 @@ trait StandardAsyncExecutionActor |touch $stdoutRedirection $stderrRedirection |tee $stdoutRedirection < "$$$out" & |tee $stderrRedirection < "$$$err" >&2 & - |tail -q -f $stdoutRedirection $stderrRedirection > $taskLogRedirection & + |${if (jobPaths.implementsTaskLogging) s"tail -q -f $stdoutRedirection $stderrRedirection > $taskLogRedirection &" else ""} |( |cd ${cwd.pathAsString} |ENVIRONMENT_VARIABLES diff --git a/services/src/main/scala/cromwell/services/metadata/CallMetadataKeys.scala b/services/src/main/scala/cromwell/services/metadata/CallMetadataKeys.scala index 3c4ea21abce..bbab5db826d 100644 --- a/services/src/main/scala/cromwell/services/metadata/CallMetadataKeys.scala +++ b/services/src/main/scala/cromwell/services/metadata/CallMetadataKeys.scala @@ -16,7 +16,7 @@ object CallMetadataKeys { val Failures = "failures" val Stdout = "stdout" val Stderr = "stderr" - val TaskLog = "task.log" + val TaskLog = "taskLog" val BackendLogsPrefix = "backendLogs" val BackendStatus = "backendStatus" val JobId = "jobId" diff --git a/supportedBackends/google/batch/src/main/scala/cromwell/backend/google/batch/models/GcpBatchJobPaths.scala b/supportedBackends/google/batch/src/main/scala/cromwell/backend/google/batch/models/GcpBatchJobPaths.scala index 48af410c45c..5bdb4e7e045 100644 --- a/supportedBackends/google/batch/src/main/scala/cromwell/backend/google/batch/models/GcpBatchJobPaths.scala +++ b/supportedBackends/google/batch/src/main/scala/cromwell/backend/google/batch/models/GcpBatchJobPaths.scala @@ -27,6 +27,8 @@ case class GcpBatchJobPaths(override val workflowPaths: GcpBatchWorkflowPaths, s"${jobKey.node.localName}$index" } + override def implementsTaskLogging: Boolean = true + val batchLogFilename: String = s"$batchLogBasename.log" lazy val batchLogPath: Path = callExecutionRoot.resolve(batchLogFilename) diff --git a/supportedBackends/google/batch/src/test/scala/cromwell/backend/google/batch/actors/GcpBatchAsyncBackendJobExecutionActorSpec.scala b/supportedBackends/google/batch/src/test/scala/cromwell/backend/google/batch/actors/GcpBatchAsyncBackendJobExecutionActorSpec.scala index ed2730db40b..8a0661a3597 100644 --- a/supportedBackends/google/batch/src/test/scala/cromwell/backend/google/batch/actors/GcpBatchAsyncBackendJobExecutionActorSpec.scala +++ b/supportedBackends/google/batch/src/test/scala/cromwell/backend/google/batch/actors/GcpBatchAsyncBackendJobExecutionActorSpec.scala @@ -1184,7 +1184,8 @@ class GcpBatchAsyncBackendJobExecutionActorSpec "runtimeAttributes:zones" -> "us-central1-b,us-central1-a", "runtimeAttributes:maxRetries" -> "0", "stderr" -> s"$batchGcsRoot/wf_hello/$workflowId/call-goodbye/stderr", - "stdout" -> s"$batchGcsRoot/wf_hello/$workflowId/call-goodbye/stdout" + "stdout" -> s"$batchGcsRoot/wf_hello/$workflowId/call-goodbye/stdout", + "taskLog" -> s"$batchGcsRoot/wf_hello/$workflowId/call-goodbye/task.log" ) )