gatk-3.8/scala/src/org/broadinstitute/sting/queue/engine/InProcessRunner.scala

45 lines
1.3 KiB
Scala
Raw Normal View History

package org.broadinstitute.sting.queue.engine
import org.broadinstitute.sting.queue.function.InProcessFunction
import org.broadinstitute.sting.queue.util.Logging
/**
* Runs a function that executes in process and does not fork out an external process.
*/
class InProcessRunner(val function: InProcessFunction) extends JobRunner[InProcessFunction] with Logging {
private var runStatus: RunnerStatus.Value = _
def start() = {
try {
if (logger.isDebugEnabled) {
logger.debug("Starting: " + function.commandDirectory + " > " + function.description)
} else {
logger.info("Starting: " + function.description)
}
function.deleteLogs()
function.deleteOutputs()
function.mkOutputDirectories()
runStatus = RunnerStatus.RUNNING
function.run()
function.doneOutputs.foreach(_.createNewFile())
writeDone()
runStatus = RunnerStatus.DONE
logger.info("Done: " + function.description)
} catch {
case e => {
runStatus = RunnerStatus.FAILED
try {
function.failOutputs.foreach(_.createNewFile())
writeStackTrace(e)
} catch {
case _ => /* ignore errors in the exception handler */
}
logger.error("Error: " + function.description, e)
}
}
}
def status = runStatus
}