Changeset 7 for trunk/pbs_drmaa/job.c


Ignore:
Timestamp:
03/02/11 17:42:40 (9 years ago)
Author:
mmamonski
Message:

lost updates...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/pbs_drmaa/job.c

    r3 r7  
    3333 
    3434#include <pbs_drmaa/job.h> 
     35#include <pbs_drmaa/log_reader.h> 
    3536#include <pbs_drmaa/pbs_attrib.h> 
    3637#include <pbs_drmaa/session.h> 
     
    5455static void 
    5556pbsdrmaa_job_on_missing( fsd_job_t *self ); 
     57 
     58void 
     59pbsdrmaa_job_on_missing_standard( fsd_job_t *self ); 
     60 
     61void 
     62pbsdrmaa_job_on_missing_log_based( fsd_job_t *self ); 
    5663 
    5764static void 
     
    227234                        ((pbsdrmaa_job_t*)self)->update( self, status ); 
    228235                 } 
    229                 else 
     236                else if( self->state < DRMAA_PS_DONE ) 
    230237                        self->on_missing( self ); 
    231238         } 
     
    398405} 
    399406 
    400  
    401407void 
    402408pbsdrmaa_job_on_missing( fsd_job_t *self ) 
    403409{ 
     410        pbsdrmaa_session_t *pbssession = (pbsdrmaa_session_t*)self->session; 
     411         
     412        if( pbssession->pbs_home == NULL ) 
     413                pbsdrmaa_job_on_missing_standard( self );        
     414        else 
     415                pbsdrmaa_job_on_missing_log_based( self );       
     416} 
     417 
     418void 
     419pbsdrmaa_job_on_missing_standard( fsd_job_t *self ) 
     420{ 
    404421        fsd_drmaa_session_t *session = self->session; 
    405         pbsdrmaa_session_t *pbssession = (pbsdrmaa_session_t*)session; 
    406         if( !pbssession->wait_thread_log){       
     422         
    407423        unsigned missing_mask = 0; 
    408424 
     
    411427 
    412428        switch( session->missing_jobs ) 
    413          { 
     429        { 
    414430                case FSD_REVEAL_MISSING_JOBS:         missing_mask = 0;     break; 
    415431                case FSD_IGNORE_MISSING_JOBS:         missing_mask = 0x73;  break; 
    416432                case FSD_IGNORE_QUEUED_MISSING_JOBS:  missing_mask = 0x13;  break; 
    417          } 
     433        } 
    418434        fsd_log_debug(( "last job_ps: %s (0x%02x); mask: 0x%02x", 
    419435                                drmaa_job_ps_to_str(self->state), self->state, missing_mask )); 
     
    427443 
    428444        if( (self->flags & FSD_JOB_TERMINATED_MASK) == 0 ) 
    429          { 
     445        { 
    430446                self->flags &= FSD_JOB_TERMINATED_MASK; 
    431447                self->flags |= FSD_JOB_TERMINATED; 
    432          } 
     448        } 
    433449 
    434450        if( (self->flags & FSD_JOB_ABORTED) == 0 
    435451                        &&  session->missing_jobs == FSD_IGNORE_MISSING_JOBS ) 
    436          { /* assume everthing was ok */ 
     452        { /* assume everthing was ok */ 
    437453                self->state = DRMAA_PS_DONE; 
    438454                self->exit_status = 0; 
    439          } 
     455        } 
    440456        else 
    441          { /* job aborted */ 
     457        { /* job aborted */ 
    442458                self->state = DRMAA_PS_FAILED; 
    443459                self->exit_status = -1; 
    444          } 
     460        } 
    445461 
    446462        fsd_log_return(( "; job_ps=%s, exit_status=%d", 
    447463                                drmaa_job_ps_to_str(self->state), self->exit_status )); 
    448         } 
    449 } 
    450  
     464} 
     465 
     466void 
     467pbsdrmaa_job_on_missing_log_based( fsd_job_t *self ) 
     468{ 
     469        fsd_drmaa_session_t *session = self->session; 
     470        pbsdrmaa_log_reader_t *log_reader = NULL; 
     471         
     472        fsd_log_enter(( "({job_id=%s})", self->job_id )); 
     473        fsd_log_warning(( "self %s missing from DRM queue", self->job_id )); 
     474         
     475        TRY 
     476        {        
     477                log_reader = pbsdrmaa_log_reader_new( session, self); 
     478                log_reader->read_log( log_reader );  
     479        } 
     480        FINALLY 
     481        { 
     482                pbsdrmaa_log_reader_destroy( log_reader ); 
     483        } 
     484        END_TRY 
     485 
     486        fsd_log_return(( "; job_ps=%s, exit_status=%d", 
     487                                drmaa_job_ps_to_str(self->state), self->exit_status ));  
     488} 
Note: See TracChangeset for help on using the changeset viewer.