- Timestamp:
- 10/12/11 14:21:23 (13 years ago)
- Location:
- trunk/pbs_drmaa
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/pbs_drmaa/job.c
r25 r26 247 247 conn_lock = fsd_mutex_unlock( &self->session->drm_connection_mutex ); 248 248 249 if(pbsdrmaa_job_update_status_accounting(self) == false)250 251 249 252 250 if( status != NULL ) … … 327 325 self->project = fsd_strdup(i->value); 328 326 break; 327 #ifndef PBS_PROFESSIONAL 329 328 case PBSDRMAA_ATTR_EXECUTION_HOST: 330 329 if (!self->execution_hosts) { … … 333 332 } 334 333 break; 334 #else 335 case PBSDRMAA_ATTR_EXECUTION_VNODE: 336 if (!self->execution_hosts) { 337 fsd_log_debug(("execution_hosts = %s", i->value)); 338 self->execution_hosts = fsd_strdup(i->value); 339 } 340 break; 341 #endif 335 342 case PBSDRMAA_ATTR_START_TIME: 336 343 { -
trunk/pbs_drmaa/log_reader.c
r25 r26 260 260 pbsdrmaa_read_log( pbsdrmaa_log_reader_t * self ) 261 261 { 262 pbsdrmaa_job_t *pbsjob = (pbsdrmaa_job_t*) self->job; 262 pbsdrmaa_job_t *pbsjob = (pbsdrmaa_job_t*) self->job; 263 263 fsd_job_t *volatile temp_job = NULL; 264 264 … … 279 279 self->select_file(self); 280 280 281 while ((self->read_line(self, line,buffer, sizeof(line), &idx,&end_idx,&line_idx)) > 0) 281 while ((self->read_line(self, line,buffer, sizeof(line), &idx,&end_idx,&line_idx)) > 0) 282 282 { 283 283 const char *volatile ptr = line; … … 349 349 self->run_flag = false; 350 350 job_id_match = true; 351 status.name = fsd_strdup(self->job->job_id); 351 status.name = fsd_strdup(self->job->job_id); 352 352 } 353 353 else if ( !job_found && diff >= 1) … … 379 379 struct_mtime, 380 380 struct_queue, 381 struct_account_name; 381 struct_account_name, 382 struct_exec_vnode; 383 struct attrl *last_attr = NULL; 382 384 383 385 bool state_running = false; … … 393 395 memset(&struct_queue,0,sizeof(struct attrl)); 394 396 memset(&struct_account_name,0,sizeof(struct attrl)); 397 memset(&struct_exec_vnode,0,sizeof(struct attrl)); 395 398 396 399 if (strcmp(event,FLD_MSG_STATE) == 0) … … 401 404 struct_state.next = NULL; 402 405 struct_state.name = "job_state"; 406 last_attr = &struct_state; 407 403 408 if(field[0] == 'J') /* Job Queued, Job Modified, Job Run*/ 404 409 { … … 424 429 { 425 430 time_t temp_time = mktime(&temp_time_tm); 426 status.attribs = &struct_mtime; 431 last_attr->next = &struct_mtime; 432 last_attr = &struct_mtime; 427 433 struct_mtime.name = "mtime"; 428 434 struct_mtime.next = NULL; … … 434 440 /* != Job deleted and Job to be deleted*/ 435 441 #ifdef PBS_PROFESSIONAL 436 else if (field[4] != 't' && field[10] != 'd') { 442 else if (field[4] != 't' && field[10] != 'd') 443 { 437 444 #else 438 else if(field[4] != 'd') { 445 else if (field[4] != 'd') 446 { 439 447 #endif 440 441 if ((struct_state.value = fsd_asprintf("%c",field[n]) ) == NULL ) { /* 4 first letter of state */ 442 fsd_exc_raise_fmt(FSD_ERRNO_INTERNAL_ERROR,"%s - Memory allocation wasn't possible",self->name); 443 } 444 if(struct_state.value[0] == 'R'){ 448 struct_state.value = fsd_asprintf("%c",field[n]); 449 450 if(struct_state.value[0] == 'R') 451 { 445 452 state_running = true; 446 } 447 } 448 else { /* job terminated - pbs drmaa detects failed as completed with exit_status !=0, aborted with status -1*/ 453 #ifdef PBS_PROFESSIONAL 454 { 455 char *p_vnode = NULL; 456 if (p_vnode = strstr(field, "exec_vnode")) 457 { 458 last_attr->next = &struct_exec_vnode; 459 last_attr = &struct_exec_vnode; 460 struct_exec_vnode.name = "exec_vnode"; 461 struct_exec_vnode.next = NULL; 462 struct_exec_vnode.value = fsd_strdup(p + 11); 463 } 464 } 465 #endif 466 } 467 } 468 else 469 { /* job terminated - pbs drmaa detects failed as completed with exit_status !=0, aborted with status -1*/ 449 470 struct_status.name = "exit_status"; 450 471 struct_status.value = fsd_strdup("-1"); … … 452 473 struct_state.next = &struct_status; 453 474 struct_state.value = fsd_strdup("C"); 454 }475 } 455 476 } 456 477 else /*if (strcmp(event,FLD_MSG_STATUS) == 0 )*/ … … 534 555 else 535 556 { 536 fsd_log_debug(("%s - updating job: %s",self->name, temp_job->job_id )); 557 fsd_log_debug(("%s - updating job: %s",self->name, temp_job->job_id )); 537 558 pbsjob->update( temp_job, &status ); 538 559 } … … 540 561 else if( job_found ) /* job_on_missing */ 541 562 { 542 fsd_log_debug(("Job_on_missing - updating job: %s", self->job->job_id )); 563 fsd_log_debug(("Job_on_missing - updating job: %s", self->job->job_id )); 543 564 pbsjob->update( self->job, &status ); 544 565 } … … 575 596 log_event = false; 576 597 } 577 else if( self->job == NULL && log_match && field_n == FLD_MSG && strncmp(field,"Log closed",10) == 0) 598 else if( self->job == NULL && log_match && field_n == FLD_MSG && strncmp(field,"Log closed",10) == 0) 578 599 { 579 600 fsd_log_debug(("%s - Date changed. Closing log file",self->name)); … … 591 612 } 592 613 593 fsd_free(temp_date); 594 } /* end of while getline loop */ 614 fsd_free(temp_date); 615 } /* end of while getline loop */ 595 616 596 617 if(self->job == NULL) … … 599 620 fd_set log_fds; 600 621 601 fsd_mutex_unlock( &self->session->mutex ); 622 fsd_mutex_unlock( &self->session->mutex ); 602 623 603 624 FD_ZERO(&log_fds); … … 874 895 close(self->fd); 875 896 876 fsd_log_debug(("Accounting Log file: %s",log_path)); 897 fsd_log_debug(("Accounting Log file: %s",log_path)); 877 898 878 899 if((self->fd = open(log_path,O_RDONLY) ) == -1 ) … … 926 947 927 948 if(self->fd != -1) 928 while ((self->read_line(self, line,buffer, sizeof(line), &idx,&end_idx,&line_idx)) > 0) 949 while ((self->read_line(self, line,buffer, sizeof(line), &idx,&end_idx,&line_idx)) > 0) 929 950 { 930 951 const char *volatile ptr = line; … … 965 986 job_found = true; 966 987 job_id_match = true; 967 status.name = fsd_strdup(self->job->job_id); 988 status.name = fsd_strdup(self->job->job_id); 968 989 } 969 990 } … … 973 994 { 974 995 struct attrl * struct_attrl = calloc(10,sizeof(struct attrl)); 975 996 int i; 997 976 998 if(field[0] == 'q') 977 999 { … … 987 1009 char msg[ 256 ] = ""; 988 1010 int n2 = 0; 989 int msg_field_n = 0; 1011 int msg_field_n = 0; 990 1012 991 1013 status.attribs = &struct_attrl[0]; … … 996 1018 { 997 1019 case FLD_MSG_ACC_USER: 998 struct_attrl[msg_field_n].name = ATTR_euser; 1020 struct_attrl[msg_field_n].name = ATTR_euser; 999 1021 break; 1000 1022 … … 1061 1083 if( job_found && status.attribs != NULL) 1062 1084 { 1063 fsd_log_debug(("Accounting file - updating job: %s", self->job->job_id )); 1085 fsd_log_debug(("Accounting file - updating job: %s", self->job->job_id )); 1064 1086 pbsjob->update( self->job, &status ); 1065 1087 res = true; … … 1074 1096 temp_job->release( temp_job ); 1075 1097 1076 int i = 0;1077 1098 for(i = 0; i < 10; i++) 1078 1099 { -
trunk/pbs_drmaa/pbs_attrib.gperf
r12 r26 4 4 * FedStage DRMAA for PBS Pro 5 5 * Copyright (C) 2006-2009 FedStage Systems 6 * 6 * Copyright (C) 2011 Poznan Supercomputing and Networking Center 7 7 * This program is free software: you can redistribute it and/or modify 8 8 * it under the terms of the GNU General Public License as published by … … 88 88 # additional job and general attribute names 89 89 exec_host, t(PBSDRMAA_ATTR_EXECUTION_HOST) 90 exec_vnode, t(PBSDRMAA_ATTR_EXECUTION_VNODE) 90 91 Job_Owner, t(PBSDRMAA_ATTR_JOB_OWNER) 91 92 resources_used, t(PBSDRMAA_ATTR_RESOURCES_USED) … … 202 203 { "stageout", PBSDRMAA_ATTR_STAGEOUT, false }, 203 204 { "exec_host", PBSDRMAA_ATTR_EXECUTION_HOST, false }, 205 { "exec_vnode", PBSDRMAA_ATTR_EXECUTION_VNODE, false }, 204 206 { "Job_Owner", PBSDRMAA_ATTR_JOB_OWNER, false }, 205 207 { "resources_used", PBSDRMAA_ATTR_RESOURCES_USED, false }, -
trunk/pbs_drmaa/pbs_attrib.h
r12 r26 70 70 /* additional job and general attribute names */ 71 71 #define PBSDRMAA_EXECUTION_HOST "exec_host" 72 #define PBSDRMAA_EXECUTION_VNODE "exec_vnode" /* PBS PRO */ 72 73 #define PBSDRMAA_JOB_OWNER "Job_Owner" 73 74 #define PBSDRMAA_RESOURCES_USED "resources_used" … … 79 80 #define PBSDRMAA_START_TIME "start_time" 80 81 #define PBSDRMAA_EXTENSION "extension" 81 #define PBSDRMAA_SUBMIT_ARGS 82 #define PBSDRMAA_SUBMIT_ARGS "submit_args" 82 83 83 84 … … 123 124 /* additional job and general attribute names */ 124 125 PBSDRMAA_ATTR_EXECUTION_HOST, 126 PBSDRMAA_ATTR_EXECUTION_VNODE, /* PBS PRO */ 125 127 PBSDRMAA_ATTR_JOB_OWNER, 126 128 PBSDRMAA_ATTR_RESOURCES_USED, … … 135 137 PBSDRMAA_ATTR_MTIME, 136 138 137 #if 0138 /* Additional Torque/OpenPBS attribs (not in DRMAA specification): */139 /* Used by OpenPBS user commands: */140 PBSDRMAA_ATTR_CHECKPOINT = DRMAA_N_ATTRIBUTES, /* MAX_DRMAA_ATTR+1, */141 PBSDRMAA_ATTR_GROUP_LIST,142 PBSDRMAA_ATTR_HOLD_TYPES,143 PBSDRMAA_ATTR_KEEP_FILES,144 PBSDRMAA_ATTR_RESOURCES,145 PBSDRMAA_ATTR_MAIL_POINTS,146 PBSDRMAA_ATTR_PRIORITY,147 PBSDRMAA_ATTR_DESTINATION_QUEUE,148 PBSDRMAA_ATTR_RERUNABLE,149 PBSDRMAA_ATTR_USER_LIST,150 PBSDRMAA_ATTR_ACCOUNT_NAME,151 PBSDRMAA_ATTR_SHELL,152 PBSDRMAA_ATTR_DEPENDENCIES,153 PBSDRMAA_ATTR_INTERACTIVE,154 PBSDRMAA_ATTR_STAGEIN,155 PBSDRMAA_ATTR_STAGEOUT,156 157 /* Additional job and general attribute names: */158 PBSDRMAA_ATTR_JOB_STATE,159 PBSDRMAA_ATTR_CTIME,160 /* PBSDRMAA_ATTR_MTIME, moved to basic attributes - needed to determine job end time*/161 PBSDRMAA_ATTR_QTIME,162 PBSDRMAA_ATTR_ETIME,163 PBSDRMAA_ATTR_RESOURCES_USED,164 PBSDRMAA_ATTR_EXIT_STATUS,165 PBSDRMAA_ATTR_JOB_OWNER,166 PBSDRMAA_ATTR_EUSER,167 PBSDRMAA_ATTR_EGROUP,168 PBSDRMAA_ATTR_HOP_COUNT,169 PBSDRMAA_ATTR_SECURITY,170 PBSDRMAA_ATTR_SCHEDULER_HINT,171 PBSDRMAA_ATTR_SERVER,172 PBSDRMAA_ATTR_QUEUE,173 PBSDRMAA_ATTR_QUEUE_RANK,174 PBSDRMAA_ATTR_EXECUTION_HOST,175 PBSDRMAA_ATTR_TOTAL_JOBS,176 PBSDRMAA_ATTR_MAX_RUNNING,177 PBSDRMAA_ATTR_COMMENT,178 PBSDRMAA_ATTR_JOB_COOKIE,179 PBSDRMAA_ATTR_HASHNAME,180 PBSDRMAA_ATTR_SESSION_ID,181 PBSDRMAA_ATTR_ALT_ID,182 183 /* Reservation attributes */184 PBSDRMAA_ATTR_RESERVATION_START,185 PBSDRMAA_ATTR_RESERVATION_END,186 PBSDRMAA_ATTR_RESERVATION_DURATION,187 PBSDRMAA_ATTR_RESERVATION_STATE,188 PBSDRMAA_ATTR_RESERVATION_SUBSTATE,189 190 /* Pseudo PBS attributes */191 PBSDRMAA_ATTR_RESERVATION_ID,192 #endif193 194 139 PBSDRMAA_N_PBS_ATTRIBUTES 195 140 } pbs_attribute_t;
Note: See TracChangeset
for help on using the changeset viewer.