NotificationService notifier = context.getNotificationService();
DurationObj compObj = notifier.computationStarted();
StringBuffer buf = new StringBuffer();
JobSubmissionListener listener = new JobSubmissionListener(job, context);
job.addListener(listener);
log.info("Request to contact:" + contact);
// The first boolean is to specify the job is a batch job - use true
// for interactive and false for batch.
// the second boolean is to specify to use the full proxy and not
// delegate a limited proxy.
job.request(contact, false, false);
log.info("JobID = " + job.getIDAsString());
// Gram.request(contact, job, false, false);
buf.append("Finished launching job, Host = ").append(context.getExecutionModel().getHost()).append(" RSL = ").append(job.getRSL()).append("working directory =").append(context.getExecutionModel().getWorkingDir()).append("tempDirectory =").append(context.getExecutionModel().getTmpDir())
.append("Globus GateKeeper cantact = ").append(contact);
context.getNotificationService().info(buf.toString());
String gramJobid = job.getIDAsString();
context.getNotificationService().info("JobID=" + gramJobid);
log.info(buf.toString());
// Send Audit Notifications
notifier.appAudit(invocationContext.getServiceName(), new URI(job.getIDAsString()), contact, null, null, gssCred.getName().toString(), null, job.getRSL());
listener.waitFor();
job.removeListener(listener);
int jobStatus = listener.getStatus();
if (jobStatus == GramJob.STATUS_FAILED) {
errCode = listener.getError();
// Adding retry for error code to properties files as
// gfac.retryonJobErrorCodes with comma separated
if (context.getServiceContext().getGlobalConfiguration().getRetryonErrorCodes().contains(Integer.toString(errCode))) {
try {
log.info("Job Failed with Error code " + errCode + " and job id: " + gramJobid);
log.info("Retry job sumttion one more time for error code" + errCode);
job = new GramJob(rsl);
job.setCredentials(gssCred);
listener = new JobSubmissionListener(job, context);
job.addListener(listener);
job.request(contact, false, false);
String newGramJobid = job.getIDAsString();
String jobStatusMessage = GfacUtils.formatJobStatus(newGramJobid, "RETRY");
context.getNotificationService().info(jobStatusMessage);
context.getNotificationService().info("JobID=" + newGramJobid);
notifier.appAudit(context.getServiceContext().getService().getService().getServiceName().getStringValue(), new URI(job.getIDAsString()), contact, null, null, gssCred.getName().toString(), null, job.getRSL());
listener.waitFor();
job.removeListener(listener);
int jobStatus1 = listener.getStatus();
if (jobStatus1 == GramJob.STATUS_FAILED) {
int errCode1 = listener.getError();
String errorMsg = "Job " + job.getID() + " on host " + context.getExecutionModel().getHost() + " Error Code = " + errCode1;
String localHost = context.getServiceContext().getGlobalConfiguration().getLocalHost();
throw new JobSubmissionFault(new Exception(errorMsg), localHost, "", "", CurrentProviders.Gram);
}
} catch (Exception e) {