From 8a87a16dbd69d552ca39dd2125830f1c45267598 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michal=20Voc=C5=AF?= Date: Thu, 8 Dec 2011 16:26:54 +0000 Subject: [PATCH] updated pbs/torque state machine --- org.glite.lb.state-machine/interface/intjobstat.h | 2 +- org.glite.lb.state-machine/src/intjobstat_supp.c | 9 +++++++-- org.glite.lb.state-machine/src/process_event_pbs.c | 13 +++++++++---- org.glite.lb.state-machine/src/seqcode_aux.c | 6 +++--- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/org.glite.lb.state-machine/interface/intjobstat.h b/org.glite.lb.state-machine/interface/intjobstat.h index dcb1031..9596491 100644 --- a/org.glite.lb.state-machine/interface/intjobstat.h +++ b/org.glite.lb.state-machine/interface/intjobstat.h @@ -31,7 +31,7 @@ limitations under the License. /* where Z.XX is version from indent + 1 (version after commit), Y = Z+1 */ /* and DESCRIPTION is short hit why version changed */ -#define INTSTAT_VERSION "revision 2.10 - payload owner" +#define INTSTAT_VERSION "revision 2.11 - payload owner" // ".... MAX LENGTH 32 BYTES !! ...." // Internal error codes diff --git a/org.glite.lb.state-machine/src/intjobstat_supp.c b/org.glite.lb.state-machine/src/intjobstat_supp.c index c4bb463..bf84aa0 100644 --- a/org.glite.lb.state-machine/src/intjobstat_supp.c +++ b/org.glite.lb.state-machine/src/intjobstat_supp.c @@ -37,6 +37,9 @@ limitations under the License. /* TBD: share in whole logging or workload */ + +/* XXX - how come this is not generated from .T when the JobStat structure is? */ + #ifdef __GNUC__ #define UNUSED_VAR __attribute__((unused)) #else @@ -535,7 +538,8 @@ char *enc_JobStat(char *old, edg_wll_JobStat* stat) if (ret) ret = enc_string(ret, stat->pbs_scheduler); if (ret) ret = enc_string(ret, stat->pbs_dest_host); if (ret) ret = enc_int(ret, stat->pbs_pid); - if (ret) ret = enc_string(ret, stat->pbs_resource_usage); + if (ret) ret = enc_taglist(ret, stat->pbs_resource_requested); + if (ret) ret = enc_taglist(ret, stat->pbs_resource_usage); if (ret) ret = enc_int(ret, stat->pbs_exit_status); if (ret) ret = enc_string(ret, stat->pbs_error_desc); if (ret) ret = enc_string(ret, stat->condor_status); @@ -641,7 +645,8 @@ edg_wll_JobStat* dec_JobStat(char *in, char **rest) if (tmp_in != NULL) stat->pbs_scheduler = dec_string(tmp_in, &tmp_in); if (tmp_in != NULL) stat->pbs_dest_host = dec_string(tmp_in, &tmp_in); if (tmp_in != NULL) stat->pbs_pid = dec_int(tmp_in, &tmp_in); - if (tmp_in != NULL) stat->pbs_resource_usage = dec_string(tmp_in, &tmp_in); + if (tmp_in != NULL) stat->pbs_resource_requested = dec_taglist(tmp_in, &tmp_in); + if (tmp_in != NULL) stat->pbs_resource_usage = dec_taglist(tmp_in, &tmp_in); if (tmp_in != NULL) stat->pbs_exit_status = dec_int(tmp_in, &tmp_in); if (tmp_in != NULL) stat->pbs_error_desc = dec_string(tmp_in, &tmp_in); if (tmp_in != NULL) stat->condor_status = dec_string(tmp_in, &tmp_in); diff --git a/org.glite.lb.state-machine/src/process_event_pbs.c b/org.glite.lb.state-machine/src/process_event_pbs.c index 8522617..441db3f 100644 --- a/org.glite.lb.state-machine/src/process_event_pbs.c +++ b/org.glite.lb.state-machine/src/process_event_pbs.c @@ -357,8 +357,6 @@ int processEvent_PBS(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, c js->pub.state = EDG_WLL_JOB_DONE; } if (USABLE_DATA(res)) { - char *new_resource_usage; - /*trio_asprintf(&new_resource_usage,"%s%s\t%s = %f [%s]", (js->pub.pbs_resource_usage) ? js->pub.pbs_resource_usage : "", (js->pub.pbs_resource_usage) ? "\n": "", @@ -366,8 +364,15 @@ int processEvent_PBS(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, c e->PBSResourceUsage.quantity, e->PBSResourceUsage.unit); */ - if (js->pub.pbs_resource_usage) free(js->pub.pbs_resource_usage); - js->pub.pbs_resource_usage = new_resource_usage; + if(e->PBSResourceUsage.usage == EDG_WLL_PBSRESOURCEUSAGE_REQUESTED) { + if (js->pub.pbs_resource_requested) free(js->pub.pbs_resource_requested); + js->pub.pbs_resource_requested = edg_wll_CopyTagList(e->PBSResourceUsage.resources); + } else if(e->PBSResourceUsage.usage == EDG_WLL_PBSRESOURCEUSAGE_USED) { + if (js->pub.pbs_resource_usage) free(js->pub.pbs_resource_usage); + js->pub.pbs_resource_usage = edg_wll_CopyTagList(e->PBSResourceUsage.resources); + } else { + /* fprintf(stderr, "resource usage %d not recognized\n", e->PBSResourceUsage.usage); */ + } } break; diff --git a/org.glite.lb.state-machine/src/seqcode_aux.c b/org.glite.lb.state-machine/src/seqcode_aux.c index 041202c..4d9b67b 100644 --- a/org.glite.lb.state-machine/src/seqcode_aux.c +++ b/org.glite.lb.state-machine/src/seqcode_aux.c @@ -145,14 +145,14 @@ int edg_wll_compare_pbs_seq(const char *a,const char *b) res = sscanf(a, EDG_WLL_SEQ_PBS_FORMAT_SCANF, &c[0], &c[1], &c[2], &c[3], &c[4]); if(res != EDG_WLL_SEQ_PBS_FORMAT_NUMBER) { - fprintf(stderr, "unparsable sequence code %s\n", a); + fprintf(stderr, "unparsable sequence code %s: %d\n", a, res); return -1; } res = sscanf(b, EDG_WLL_SEQ_PBS_FORMAT_SCANF, &d[0], &d[1], &d[2], &d[3], &d[4]); if(res != EDG_WLL_SEQ_PBS_FORMAT_NUMBER) { - fprintf(stderr, "unparsable sequence code %s\n", b); + fprintf(stderr, "unparsable sequence code %s: %d\n", b, res); return -1; } @@ -246,7 +246,7 @@ int edg_wll_compare_seq(const char *a, const char *b) char sca[EDG_WLL_SEQ_SIZE], scb[EDG_WLL_SEQ_SIZE]; - if ( (strstr(a,"SMOM=") == a) && (strstr(b,"SMOM=") == b) ) + if ( (strstr(a,"SMOM=") != NULL) && (strstr(b,"SMOM=") != NULL) ) return edg_wll_compare_pbs_seq(a,b); if (!strstr(a, "LBS")) snprintf(sca,EDG_WLL_SEQ_SIZE,"%s:LBS=000000",a); -- 1.8.2.3