From: Zdeněk Salvet Date: Fri, 24 Aug 2007 06:13:36 +0000 (+0000) Subject: Implement logic behind suspended and suspend_reason job status attributes. X-Git-Tag: glite-lb-client_R_3_0_1_1~27 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=66f24a08c78974237f9e542a1a0e3cef60a754aa;p=jra1mw.git Implement logic behind suspended and suspend_reason job status attributes. Fixes bug #28772. --- diff --git a/org.glite.lb.server/src/jobstat.h b/org.glite.lb.server/src/jobstat.h index 761403c..77ac99d 100644 --- a/org.glite.lb.server/src/jobstat.h +++ b/org.glite.lb.server/src/jobstat.h @@ -11,7 +11,7 @@ * (includes edg_wll_JobStat API structure) */ -#define INTSTAT_VERSION "release-3.3.3" +#define INTSTAT_VERSION "release-3.3.4" // Internal error codes diff --git a/org.glite.lb.server/src/jobstat_supp.c b/org.glite.lb.server/src/jobstat_supp.c index 0838a74..9b80bd9 100644 --- a/org.glite.lb.server/src/jobstat_supp.c +++ b/org.glite.lb.server/src/jobstat_supp.c @@ -497,6 +497,8 @@ static char *enc_JobStat(char *old, edg_wll_JobStat* stat) if (ret) ret = enc_int(ret, stat->payload_running); if (ret) ret = enc_strlist(ret, stat->possible_destinations); if (ret) ret = enc_strlist(ret, stat->possible_ce_nodes); + if (ret) ret = enc_int(ret, stat->suspended); + if (ret) ret = enc_string(ret, stat->suspend_reason); if (ret) ret = enc_int_array(ret, stat->children_hist, EDG_WLL_NUMBER_OF_STATCODES); if (ret) ret = enc_string(ret, stat->pbs_state); if (ret) ret = enc_string(ret, stat->pbs_queue); @@ -569,6 +571,8 @@ static edg_wll_JobStat* dec_JobStat(char *in, char **rest) if (tmp_in != NULL) stat->payload_running = dec_int(tmp_in, &tmp_in); if (tmp_in != NULL) stat->possible_destinations = dec_strlist(tmp_in, &tmp_in); if (tmp_in != NULL) stat->possible_ce_nodes = dec_strlist(tmp_in, &tmp_in); + if (tmp_in != NULL) stat->suspended = dec_int(tmp_in, &tmp_in); + if (tmp_in != NULL) stat->suspend_reason = dec_string(tmp_in, &tmp_in); if (tmp_in != NULL) { stat->children_hist = (int*)calloc(EDG_WLL_NUMBER_OF_STATCODES+1, sizeof(int)); dec_int_array(tmp_in, &tmp_in, stat->children_hist); diff --git a/org.glite.lb.server/src/process_event.c b/org.glite.lb.server/src/process_event.c index d4529ef..7024462 100644 --- a/org.glite.lb.server/src/process_event.c +++ b/org.glite.lb.server/src/process_event.c @@ -651,6 +651,22 @@ static int processEvent_glite(intJobStat *js, edg_wll_Event *e, int ev_seq, int } #endif break; + case EDG_WLL_EVENT_SUSPEND: + if (USABLE(res, strict)) { + if (js->pub.state == EDG_WLL_JOB_RUNNING) { + js->pub.suspended = 1; + rep(js->pub.suspend_reason, e->suspend.reason); + } + } + break; + case EDG_WLL_EVENT_RESUME: + if (USABLE(res, strict)) { + if (js->pub.state == EDG_WLL_JOB_RUNNING) { + js->pub.suspended = 0; + rep(js->pub.suspend_reason, e->resume.reason); + } + } + break; case EDG_WLL_EVENT_RESUBMISSION: if (USABLE(res, strict)) { if (e->resubmission.result == EDG_WLL_RESUBMISSION_WONTRESUB) { @@ -897,6 +913,11 @@ static int processEvent_glite(intJobStat *js, edg_wll_Event *e, int ev_seq, int else rep(js->last_seqcode, e->any.seqcode); } + if (js->pub.state != EDG_WLL_JOB_RUNNING) { + js->pub.suspended = 0; + rep(js->pub.suspend_reason, NULL); + } + if (fine_res == RET_GOODBRANCH) { rep(js->last_branch_seqcode, e->any.seqcode); }