Changeset 21 for trunk/pbs_drmaa/job.c


Ignore:
Timestamp:
07/27/11 23:41:14 (13 years ago)
Author:
mmatloka
Message:

exec host from accounting file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/pbs_drmaa/job.c

    r17 r21  
    6464static void 
    6565pbsdrmaa_job_update( fsd_job_t *self, struct batch_status* ); 
     66 
     67bool 
     68pbsdrmaa_job_update_status_accounting( fsd_job_t *self ); 
    6669 
    6770 
     
    189192 
    190193        fsd_log_enter(( "({job_id=%s})", self->job_id )); 
     194         
    191195        TRY 
    192196         { 
     
    203207                if( status == NULL ) 
    204208                 { 
    205 #ifndef PBS_PROFESSIONAL 
    206                         fsd_log_error(("pbs_statjob error: %d, %s, %s", pbs_errno, pbse_to_txt(pbs_errno), pbs_strerror(pbs_errno))); 
    207 #else 
    208 #  ifndef PBS_PROFESSIONAL_NO_LOG 
    209                         fsd_log_error(("pbs_statjob error: %d, %s", pbs_errno, pbse_to_txt(pbs_errno))); 
    210 #  else 
    211                         fsd_log_error(("pbs_statjob error: %d", pbs_errno)); 
    212 #  endif 
    213 #endif 
    214                         switch( pbs_errno ) 
    215                          { 
    216                                 case PBSE_UNKJOBID: 
    217                                         break; 
    218                                 case PBSE_PROTOCOL: 
    219                                 case PBSE_EXPIRED: 
    220                                         if ( session->pbs_conn >= 0 ) 
    221                                                 pbs_disconnect( session->pbs_conn ); 
    222                                         sleep(1); 
    223                                         session->pbs_conn = pbs_connect( session->super.contact ); 
    224                                         if( session->pbs_conn < 0 ) 
    225                                                 pbsdrmaa_exc_raise_pbs( "pbs_connect" ); 
    226                                         else  
    227                                          { 
    228                                                 fsd_log_error(("retry:")); 
    229                                                 goto retry; 
    230                                          } 
    231                                 default: 
    232                                         pbsdrmaa_exc_raise_pbs( "pbs_statjob" ); 
    233                                         break; 
    234                                 case 0:  /* ? */ 
    235                                         fsd_exc_raise_code( FSD_ERRNO_INTERNAL_ERROR ); 
    236                                         break; 
     209                        if(pbsdrmaa_job_update_status_accounting(self) == false) 
     210                        { 
     211        #ifndef PBS_PROFESSIONAL 
     212                                fsd_log_error(("pbs_statjob error: %d, %s, %s", pbs_errno, pbse_to_txt(pbs_errno), pbs_strerror(pbs_errno))); 
     213        #else 
     214        #  ifndef PBS_PROFESSIONAL_NO_LOG 
     215                                fsd_log_error(("pbs_statjob error: %d, %s", pbs_errno, pbse_to_txt(pbs_errno))); 
     216        #  else 
     217                                fsd_log_error(("pbs_statjob error: %d", pbs_errno)); 
     218        #  endif 
     219        #endif 
     220 
     221                                /**/ 
     222 
     223                                switch( pbs_errno ) 
     224                                 { 
     225                                        case PBSE_UNKJOBID: 
     226                                                break; 
     227                                        case PBSE_PROTOCOL: 
     228                                        case PBSE_EXPIRED: 
     229                                                if ( session->pbs_conn >= 0 ) 
     230                                                        pbs_disconnect( session->pbs_conn ); 
     231                                                sleep(1); 
     232                                                session->pbs_conn = pbs_connect( session->super.contact ); 
     233                                                if( session->pbs_conn < 0 ) 
     234                                                        pbsdrmaa_exc_raise_pbs( "pbs_connect" ); 
     235                                                else  
     236                                                 { 
     237                                                        fsd_log_error(("retry:")); 
     238                                                        goto retry; 
     239                                                 } 
     240                                        default: 
     241                                                pbsdrmaa_exc_raise_pbs( "pbs_statjob" ); 
     242                                                break; 
     243                                        case 0:  /* ? */ 
     244                                                fsd_exc_raise_code( FSD_ERRNO_INTERNAL_ERROR ); 
     245                                                break; 
     246                                 } 
    237247                         } 
    238248                 } 
     
    497507                                drmaa_job_ps_to_str(self->state), self->exit_status ));  
    498508} 
     509 
     510bool 
     511pbsdrmaa_job_update_status_accounting( fsd_job_t *self ) 
     512{ 
     513        fsd_drmaa_session_t *session = self->session; 
     514        pbsdrmaa_log_reader_t *log_reader = NULL; 
     515        bool res = false; 
     516         
     517        fsd_log_enter(( "({job_id=%s})", self->job_id )); 
     518        fsd_log_info(( "Reading job %s info from accounting file", self->job_id )); 
     519         
     520        TRY 
     521        {        
     522                log_reader = pbsdrmaa_log_reader_accounting_new( session, self); 
     523                bool res = log_reader->read_log( log_reader );  
     524        } 
     525        FINALLY 
     526        { 
     527                pbsdrmaa_log_reader_destroy( log_reader ); 
     528        } 
     529        END_TRY 
     530 
     531        fsd_log_return(("")); 
     532        return res; 
     533} 
Note: See TracChangeset for help on using the changeset viewer.