Changeset 48 for trunk/pbs_drmaa/log_reader.c
- Timestamp:
- 12/07/11 18:00:32 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/pbs_drmaa/log_reader.c
r45 r48 72 72 static void pbsdrmaa_read_log(); 73 73 74 static void pbsdrmaa_select_file_wait_thread( pbsdrmaa_log_reader_t * self); 75 76 char *pbsdrmaa_read_line_wait_thread( pbsdrmaa_log_reader_t * self); 74 static void pbsdrmaa_select_file( pbsdrmaa_log_reader_t * self); 75 76 static void pbsdrmaa_close_log( pbsdrmaa_log_reader_t * self); 77 78 static void pbsdrmaa_reopen_log( pbsdrmaa_log_reader_t * self); 77 79 78 80 static time_t pbsdrmaa_parse_log_timestamp(const char *timestamp, char *unixtime_str, size_t size); … … 141 143 self->session = session; 142 144 143 self->select_file = pbsdrmaa_select_file _wait_thread;145 self->select_file = pbsdrmaa_select_file; 144 146 self->read_log = pbsdrmaa_read_log; 147 self->close = pbsdrmaa_close_log; 148 self->reopen = pbsdrmaa_reopen_log; 145 149 146 150 self->run_flag = true; … … 148 152 self->date_changed = true; 149 153 self->first_open = true; 154 self->log_path = NULL; 155 self->current_offset = 0; 150 156 151 157 } … … 458 464 fsd_mutex_unlock( &self->session->mutex ); 459 465 466 /* close */ 467 self->close(self); 468 460 469 sleep(((pbsdrmaa_session_t *)self->session)->wait_thread_sleep_time); 470 471 /* and reopen log file */ 472 self->reopen(self); 461 473 462 474 fsd_mutex_lock( &self->session->mutex ); … … 490 502 491 503 void 492 pbsdrmaa_select_file _wait_thread( pbsdrmaa_log_reader_t * self )504 pbsdrmaa_select_file( pbsdrmaa_log_reader_t * self ) 493 505 { 494 506 pbsdrmaa_session_t *pbssession = (pbsdrmaa_session_t*) self->session; … … 496 508 if (self->date_changed) 497 509 { 498 char * log_path = NULL;499 510 int num_tries = 0; 500 511 struct tm tm; … … 511 522 #define DRMAA_WAIT_THREAD_MAX_TRIES (12) 512 523 /* generate new date, close file and open new */ 513 log_path = fsd_asprintf("%s/server_logs/%04d%02d%02d", pbssession->pbs_home, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday); 524 if (self->log_path) 525 fsd_free(self->log_path); 526 527 self->log_path = fsd_asprintf("%s/server_logs/%04d%02d%02d", pbssession->pbs_home, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday); 514 528 515 529 if(self->fhandle) 516 530 fclose(self->fhandle); 517 531 518 fsd_log_info(("Opening log file: %s", log_path));532 fsd_log_info(("Opening log file: %s",self->log_path)); 519 533 520 534 retry: 521 if ((self->fhandle = fopen( log_path,"r")) == NULL && (num_tries > DRMAA_WAIT_THREAD_MAX_TRIES || self->first_open))535 if ((self->fhandle = fopen(self->log_path,"r")) == NULL && (num_tries > DRMAA_WAIT_THREAD_MAX_TRIES || self->first_open)) 522 536 { 523 fsd_log_error(("Can't open log file . Verify pbs_home. Running standard wait_thread."));537 fsd_log_error(("Can't open log file: %s. Verify pbs_home. Running standard wait_thread.", self->log_path)); 524 538 fsd_log_error(("Remember that without keep_completed set the standard wait_thread won't provide information about job exit status")); 525 539 /*pbssession->super.enable_wait_thread = false;*/ /* run not wait_thread */ … … 530 544 else if ( self->fhandle == NULL ) 531 545 { /* Torque seems not to create a new file immediately after the old one is closed */ 532 fsd_log_warning(("Can't open log file: %s. Retries count: %d", log_path, num_tries));546 fsd_log_warning(("Can't open log file: %s. Retries count: %d", self->log_path, num_tries)); 533 547 num_tries++; 534 548 sleep(2 * num_tries); 535 549 goto retry; 536 550 } 537 538 fsd_free(log_path);539 551 540 552 fsd_log_debug(("Log file opened")); … … 653 665 } 654 666 655 667 void 668 pbsdrmaa_close_log( pbsdrmaa_log_reader_t * self ) 669 { 670 671 self->current_offset = ftello(self->fhandle); 672 673 fclose(self->fhandle); 674 675 self->fhandle = NULL; 676 } 677 678 void 679 pbsdrmaa_reopen_log( pbsdrmaa_log_reader_t * self ) 680 { 681 if ((self->fhandle = fopen(self->log_path,"r")) == NULL) 682 { 683 fsd_exc_raise_fmt(FSD_ERRNO_INTERNAL_ERROR,"Failed to reopen log file"); 684 } 685 686 if(fseek(self->fhandle, self->current_offset, SEEK_SET) == (off_t) -1) 687 { 688 fsd_exc_raise_fmt(FSD_ERRNO_INTERNAL_ERROR,"fseek error"); 689 } 690 } 691
Note: See TracChangeset
for help on using the changeset viewer.