Changeset 26 for trunk/ll_drmaa/job.c
- Timestamp:
- 11/11/12 15:06:16 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ll_drmaa/job.c
r20 r26 35 35 36 36 #include <llapi.h> 37 38 #define LL_DRMAA_MAX_MISSING_TIME (60) 37 39 38 40 static void … … 287 289 } 288 290 289 data = ll_get_objs(job, LL_ SCHEDD, NULL, &obj_count, &err_code);291 data = ll_get_objs(job, LL_CM, NULL, &obj_count, &err_code); 290 292 if (data == NULL) { 291 fsd_log_debug(("Code: %d ll_get_objs() returns NULL. %s",lldrmaa_map_get_objs(err_code), lldrmaa_err_get_objs(err_code) )); 292 /* This error means that there is no info in LL_SCHEDD but this job have probably ended and will be detected by wait_thread. This won't be fsd_log_warning because displays too often during program execution */ 293 if (err_code == LL_GET_OBJS_NO_OBJECTS_ERR) 294 { 295 if (self->state != DRMAA_PS_UNDETERMINED) 296 { 297 fsd_log_info(("Job %s missing. Assuming finished", self->job_id)); 298 self->state = DRMAA_PS_DONE; 299 self->exit_status = 0; 300 } 301 else if (llself->missing_time == 0) 302 { 303 llself->missing_time = time(NULL); 304 fsd_log_debug(("Job %s missing for the first time", self->job_id)); /* Job may not yet be visible in LL */ 305 } 306 else if (time(NULL) - llself->missing_time > LL_DRMAA_MAX_MISSING_TIME) 307 { 308 fsd_log_error(("Job %s missing for more then %d seconds. Assuming failef", self->job_id, LL_DRMAA_MAX_MISSING_TIME)); 309 /* Job may not yet be visible in LL */ 310 self->state = DRMAA_PS_FAILED; 311 self->exit_status = -1; 312 } 313 else 314 { 315 fsd_log_debug(("Job %s still missing", self->job_id)); 316 } 317 } 318 else 319 { 320 fsd_log_error(("Code: %d,%d ll_get_objs() returns NULL. %s", err_code, lldrmaa_map_get_objs(err_code), lldrmaa_err_get_objs(err_code) )); 321 } 293 322 } else { 294 323 … … 312 341 } 313 342 314 llself->read_job_info( 315 316 fsd_log_info(("LL State: %d -> DRMAA: %s", step_state,drmaa_job_ps_to_str(self->state)));343 llself->read_job_info(self, step_state, hold_type); 344 345 fsd_log_info(("LL State: %d -> DRMAA: %s", step_state, drmaa_job_ps_to_str(self->state))); 317 346 } 318 347 } … … 352 381 self->super.control = lldrmaa_job_control; 353 382 self->super.update_status = lldrmaa_job_update_status; 383 self->missing_time = 0; 354 384 self->read_job_info_mon = lldrmaa_job_read_job_info_mon; 355 385 self->read_job_info = lldrmaa_job_read_job_info; … … 471 501 } 472 502 473 TRY474 {475 const char *command = NULL;476 char *command_expanded = NULL;477 const char *const *i;478 int j;479 480 /* remote command */481 command = jt->get_attr( jt, DRMAA_REMOTE_COMMAND );482 if( command == NULL )483 fsd_exc_raise_msg(484 FSD_DRMAA_ERRNO_CONFLICTING_ATTRIBUTE_VALUES,485 "drmaa_remote_command not set for job template"486 );487 488 command_expanded = expand->expand( expand, fsd_strdup(command), FSD_DRMAA_PH_HD | FSD_DRMAA_PH_WD );489 490 fprintf(fd,"# @ executable = %s\n", command_expanded);491 fsd_log_debug(("# @ executable = %s\n", command_expanded));492 493 fsd_free(command_expanded);494 495 /* arguments list */496 vector = jt->get_v_attr( jt, DRMAA_V_ARGV );497 498 if( vector )499 {500 fprintf(fd,"# @ arguments =");501 fsd_log_debug(("# @ arguments ="));502 503 for( i = vector, j = 2; *i; i++, j++ )504 {505 char *arg_expanded = expand->expand( expand, fsd_strdup(*i), FSD_DRMAA_PH_HD | FSD_DRMAA_PH_WD );506 507 fprintf(fd," '%s'", arg_expanded);508 fsd_log_debug(("%s", arg_expanded));509 510 fsd_free(arg_expanded);511 }512 }513 514 fprintf(fd," \n");515 }516 END_TRY517 518 503 /* start time */ 519 504 value = jt->get_attr( jt, DRMAA_START_TIME ); … … 779 764 fprintf(fd,"# @ queue\n"); 780 765 fsd_log_debug(("# @ queue")); 766 767 fprintf(fd,"\n"); 768 fprintf(fd,"echo >&2\n"); /* this line forces creation of stderr file */ 769 770 TRY 771 { 772 const char *command = NULL; 773 char *command_expanded = NULL; 774 const char *const *i; 775 int j; 776 777 /* remote command */ 778 command = jt->get_attr( jt, DRMAA_REMOTE_COMMAND ); 779 if( command == NULL ) 780 fsd_exc_raise_msg( 781 FSD_DRMAA_ERRNO_CONFLICTING_ATTRIBUTE_VALUES, 782 "drmaa_remote_command not set for job template" 783 ); 784 785 command_expanded = expand->expand( expand, fsd_strdup(command), FSD_DRMAA_PH_HD | FSD_DRMAA_PH_WD ); 786 787 fprintf(fd,"%s", command_expanded); /* we put the commmand at the end of script (instead of using @executable keyword 788 in roder to avoid coping of the binary */ 789 fsd_log_debug(("command = %s\n", command_expanded)); 790 791 fsd_free(command_expanded); 792 793 /* arguments list */ 794 vector = jt->get_v_attr( jt, DRMAA_V_ARGV ); 795 796 if( vector ) 797 { 798 fsd_log_debug(("arguments = ")); 799 800 for( i = vector, j = 2; *i; i++, j++ ) 801 { 802 char *arg_expanded = expand->expand( expand, fsd_strdup(*i), FSD_DRMAA_PH_HD | FSD_DRMAA_PH_WD ); 803 804 fprintf(fd," '%s'", arg_expanded); 805 fsd_log_debug(("%s", arg_expanded)); 806 807 fsd_free(arg_expanded); 808 } 809 } 810 811 fprintf(fd," \n"); 812 } 813 END_TRY 814 815 781 816 } 782 817 }
Note: See TracChangeset
for help on using the changeset viewer.