jobId="Local_"+Calendar.getInstance().getTimeInMillis();
if(jobExecutionContext.getGFacConfiguration().getAiravataAPI() != null){
saveApplicationJob(jobExecutionContext);
}
GFacUtils.updateApplicationJobStatus(jobExecutionContext,jobId, ApplicationJobStatus.INITIALIZE);
Thread standardOutWriter = new InputStreamToFileWriter(process.getInputStream(), app.getStandardOutput());
Thread standardErrorWriter = new InputStreamToFileWriter(process.getErrorStream(), app.getStandardError());
// start output threads
standardOutWriter.setDaemon(true);
standardErrorWriter.setDaemon(true);
standardOutWriter.start();
standardErrorWriter.start();
GFacUtils.updateApplicationJobStatus(jobExecutionContext,jobId, ApplicationJobStatus.EXECUTING);
// wait for the process (application) to finish executing
int returnValue = process.waitFor();
GFacUtils.updateApplicationJobStatus(jobExecutionContext,jobId, ApplicationJobStatus.FINALIZE);
// make sure other two threads are done
standardOutWriter.join();
standardErrorWriter.join();
/*
* check return value. usually not very helpful to draw conclusions based on return values so don't bother.
* just provide warning in the log messages
*/