1 package fr.in2p3.jsaga.adaptor.job;
2
3 import fr.in2p3.jsaga.adaptor.base.defaults.Default;
4 import fr.in2p3.jsaga.adaptor.base.usage.Usage;
5 import fr.in2p3.jsaga.adaptor.job.monitor.JobStatus;
6 import fr.in2p3.jsaga.adaptor.job.monitor.QueryIndividualJob;
7 import org.apache.log4j.Logger;
8 import org.globus.gram.*;
9 import org.globus.gram.internal.GRAMConstants;
10 import org.globus.gram.internal.GRAMProtocolErrorConstants;
11 import org.ietf.jgss.GSSException;
12 import org.ogf.saga.error.*;
13
14 import java.util.Map;
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class GkCommonJobMonitorAdaptor extends GatekeeperJobAdaptorAbstract implements QueryIndividualJob {
29 private Logger logger = Logger.getLogger(GkCommonJobMonitorAdaptor.class.getName());
30
31 public String getType() {
32 return "gk";
33 }
34
35 public Usage getUsage() {
36 return null;
37 }
38
39 public Default[] getDefaults(Map attributes) throws IncorrectStateException {
40 return null;
41 }
42
43 public JobStatus getStatus(String nativeJobId) throws TimeoutException, NoSuccessException {
44 GramJob job = getGramJobById(nativeJobId);
45 try {
46 Gram.jobStatus(job);
47 } catch (GramException e) {
48 if (e.getErrorCode() == GramException.ERROR_CONTACTING_JOB_MANAGER) {
49
50 logger.warn("Globus job manager may be stopped: status DONE returned in getStatus() for job "+nativeJobId);
51 return new GatekeeperJobStatus(nativeJobId, new Integer(GRAMConstants.STATUS_DONE), "DONE");
52 } else {
53 this.rethrowException(e);
54 }
55 } catch (GSSException e) {
56 throw new NoSuccessException(e);
57 }
58 return new GatekeeperJobStatus(nativeJobId, new Integer(job.getStatus()), job.getStatusAsString(), job.getError());
59 }
60
61 protected void rethrowException(GramException e) throws TimeoutException, NoSuccessException {
62 switch(e.getErrorCode()) {
63 case GRAMProtocolErrorConstants.INVALID_JOB_CONTACT:
64 case GRAMProtocolErrorConstants.ERROR_CONNECTION_FAILED:
65 throw new TimeoutException(e);
66 default:
67 throw new NoSuccessException(e);
68 }
69 }
70 }