Fixed bug where the command directory was not being set to an absolute path, leading LSF to write some .done files to /tmp.
No longer using the command directory for temporary .done files, and instead using the user specified temporary directory. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@4678 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
62be55376b
commit
302e8f0239
|
|
@ -13,6 +13,9 @@ class LsfJobRunner(val function: CommandLineFunction) extends DispatchJobRunner
|
||||||
|
|
||||||
var job: LsfJob = new LsfJob
|
var job: LsfJob = new LsfJob
|
||||||
|
|
||||||
|
/** Which directory to use for the job status files. */
|
||||||
|
private def jobStatusDir = function.jobTempDir
|
||||||
|
|
||||||
/** A file to look for to validate that the function ran to completion. */
|
/** A file to look for to validate that the function ran to completion. */
|
||||||
private var jobStatusPath: String = _
|
private var jobStatusPath: String = _
|
||||||
|
|
||||||
|
|
@ -45,7 +48,7 @@ class LsfJobRunner(val function: CommandLineFunction) extends DispatchJobRunner
|
||||||
job.project = function.jobProject
|
job.project = function.jobProject
|
||||||
job.queue = function.jobQueue
|
job.queue = function.jobQueue
|
||||||
|
|
||||||
if (function.commandDirectory != new File(".").getAbsoluteFile)
|
if (IOUtils.absolute(new File(".")) != function.commandDirectory)
|
||||||
job.workingDir = function.commandDirectory
|
job.workingDir = function.commandDirectory
|
||||||
|
|
||||||
job.extraBsubArgs ++= function.extraArgs
|
job.extraBsubArgs ++= function.extraArgs
|
||||||
|
|
@ -78,7 +81,7 @@ class LsfJobRunner(val function: CommandLineFunction) extends DispatchJobRunner
|
||||||
|
|
||||||
runStatus = RunnerStatus.RUNNING
|
runStatus = RunnerStatus.RUNNING
|
||||||
Retry.attempt(() => job.run(), 1, 5, 10)
|
Retry.attempt(() => job.run(), 1, 5, 10)
|
||||||
jobStatusPath = IOUtils.absolute(new File(function.commandDirectory, "." + job.bsubJobId)).toString
|
jobStatusPath = IOUtils.absolute(new File(jobStatusDir, "." + job.bsubJobId)).toString
|
||||||
logger.info("Submitted LSF job id: " + job.bsubJobId)
|
logger.info("Submitted LSF job id: " + job.bsubJobId)
|
||||||
} catch {
|
} catch {
|
||||||
case e =>
|
case e =>
|
||||||
|
|
@ -166,7 +169,7 @@ class LsfJobRunner(val function: CommandLineFunction) extends DispatchJobRunner
|
||||||
* @return the file path to the pre-exec.
|
* @return the file path to the pre-exec.
|
||||||
*/
|
*/
|
||||||
private def writeExec() = {
|
private def writeExec() = {
|
||||||
IOUtils.writeTempFile(function.commandLine, ".exec", "", function.jobTempDir)
|
IOUtils.writeTempFile(function.commandLine, ".exec", "", jobStatusDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -177,15 +180,15 @@ class LsfJobRunner(val function: CommandLineFunction) extends DispatchJobRunner
|
||||||
private def writePreExec() = {
|
private def writePreExec() = {
|
||||||
val preExec = new StringBuilder
|
val preExec = new StringBuilder
|
||||||
|
|
||||||
preExec.append("rm -f '%s/'.$LSB_JOBID.done%n".format(function.commandDirectory))
|
preExec.append("rm -f '%s/'.$LSB_JOBID.done%n".format(jobStatusDir))
|
||||||
function.doneOutputs.foreach(file => preExec.append("rm -f '%s'%n".format(file)))
|
function.doneOutputs.foreach(file => preExec.append("rm -f '%s'%n".format(file)))
|
||||||
preExec.append("rm -f '%s/'.$LSB_JOBID.fail%n".format(function.commandDirectory))
|
preExec.append("rm -f '%s/'.$LSB_JOBID.fail%n".format(jobStatusDir))
|
||||||
function.failOutputs.foreach(file => preExec.append("rm -f '%s'%n".format(file)))
|
function.failOutputs.foreach(file => preExec.append("rm -f '%s'%n".format(file)))
|
||||||
|
|
||||||
mountCommand(function).foreach(command =>
|
mountCommand(function).foreach(command =>
|
||||||
preExec.append("%s%n".format(command)))
|
preExec.append("%s%n".format(command)))
|
||||||
|
|
||||||
IOUtils.writeTempFile(preExec.toString, ".preExec", "", function.jobTempDir)
|
IOUtils.writeTempFile(preExec.toString, ".preExec", "", jobStatusDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -209,8 +212,8 @@ class LsfJobRunner(val function: CommandLineFunction) extends DispatchJobRunner
|
||||||
|else
|
|else
|
||||||
|%stouch "$JOB_STAT_ROOT".fail
|
|%stouch "$JOB_STAT_ROOT".fail
|
||||||
|fi
|
|fi
|
||||||
|""".stripMargin.format(function.commandDirectory, touchDone, touchFail))
|
|""".stripMargin.format(jobStatusDir, touchDone, touchFail))
|
||||||
|
|
||||||
IOUtils.writeTempFile(postExec.toString, ".postExec", "", function.jobTempDir)
|
IOUtils.writeTempFile(postExec.toString, ".postExec", "", jobStatusDir)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -283,7 +283,7 @@ trait QFunction extends Logging {
|
||||||
jobTempDir = qSettings.tempDirectory
|
jobTempDir = qSettings.tempDirectory
|
||||||
|
|
||||||
// If the command directory is relative, insert the run directory ahead of it.
|
// If the command directory is relative, insert the run directory ahead of it.
|
||||||
commandDirectory = new File(qSettings.runDirectory, commandDirectory.getPath)
|
commandDirectory = IOUtils.absolute(new File(qSettings.runDirectory, commandDirectory.getPath))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue