Ignore:
Timestamp:
12/07/11 18:00:32 (12 years ago)
Author:
mmamonski
Message:

node_properties and custom_resources support. Now one can request resources via env variable

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/pbs_drmaa/log_reader.c

    r45 r48  
    7272static void pbsdrmaa_read_log(); 
    7373 
    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); 
     74static void pbsdrmaa_select_file( pbsdrmaa_log_reader_t * self); 
     75 
     76static void pbsdrmaa_close_log( pbsdrmaa_log_reader_t * self); 
     77 
     78static void pbsdrmaa_reopen_log( pbsdrmaa_log_reader_t * self); 
    7779 
    7880static time_t pbsdrmaa_parse_log_timestamp(const char *timestamp, char *unixtime_str, size_t size); 
     
    141143                self->session = session; 
    142144 
    143                 self->select_file = pbsdrmaa_select_file_wait_thread; 
     145                self->select_file = pbsdrmaa_select_file; 
    144146                self->read_log = pbsdrmaa_read_log;      
     147                self->close = pbsdrmaa_close_log; 
     148                self->reopen = pbsdrmaa_reopen_log; 
    145149                 
    146150                self->run_flag = true; 
     
    148152                self->date_changed = true; 
    149153                self->first_open = true; 
     154                self->log_path = NULL; 
     155                self->current_offset = 0; 
    150156                 
    151157        } 
     
    458464                                fsd_mutex_unlock( &self->session->mutex ); 
    459465 
     466                                /* close */ 
     467                                self->close(self); 
     468 
    460469                                sleep(((pbsdrmaa_session_t *)self->session)->wait_thread_sleep_time); 
     470 
     471                                /* and reopen log file */ 
     472                                self->reopen(self); 
    461473 
    462474                                fsd_mutex_lock( &self->session->mutex ); 
     
    490502 
    491503void 
    492 pbsdrmaa_select_file_wait_thread ( pbsdrmaa_log_reader_t * self ) 
     504pbsdrmaa_select_file( pbsdrmaa_log_reader_t * self ) 
    493505{ 
    494506        pbsdrmaa_session_t *pbssession = (pbsdrmaa_session_t*) self->session; 
     
    496508        if (self->date_changed) 
    497509         { 
    498                 char * log_path = NULL; 
    499510                int num_tries = 0; 
    500511                struct tm tm;  
     
    511522                #define DRMAA_WAIT_THREAD_MAX_TRIES (12) 
    512523                /* 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); 
    514528 
    515529                if(self->fhandle) 
    516530                        fclose(self->fhandle); 
    517531 
    518                 fsd_log_info(("Opening log file: %s",log_path)); 
     532                fsd_log_info(("Opening log file: %s",self->log_path)); 
    519533                                 
    520534        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)) 
    522536                 { 
    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)); 
    524538                        fsd_log_error(("Remember that without keep_completed set the standard wait_thread won't provide information about job exit status")); 
    525539                        /*pbssession->super.enable_wait_thread = false;*/ /* run not wait_thread */ 
     
    530544                else if ( self->fhandle == NULL ) 
    531545                 { /* 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)); 
    533547                        num_tries++; 
    534548                        sleep(2 * num_tries); 
    535549                        goto retry; 
    536550                 } 
    537  
    538                 fsd_free(log_path); 
    539551 
    540552                fsd_log_debug(("Log file opened")); 
     
    653665} 
    654666 
    655  
     667void 
     668pbsdrmaa_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 
     678void 
     679pbsdrmaa_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.