Changeset 84


Ignore:
Timestamp:
01/08/13 18:41:08 (11 years ago)
Author:
mmamonski
Message:

PBS API

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/pbs_drmaa/pbs_conn.c

    r83 r84  
    193193pbsdrmaa_pbs_statjob( pbsdrmaa_pbs_conn_t *self,  char *job_id, struct attrl *attrib ) 
    194194{ 
    195  
     195        struct batch_status *volatile status = NULL; 
     196        volatile bool first_try = true; 
     197        volatile bool conn_lock = false; 
     198 
     199 
     200        fsd_log_enter(("")); 
     201 
     202        TRY 
     203         { 
     204                conn_lock = fsd_mutex_lock(&self->session->super.drm_connection_mutex); 
     205 
     206                pbsdrmaa_pbs_reconnect_internal(self, false); 
     207 
     208retry: 
     209                status = pbs_statjob(self->connection_fd, job_id, attrib, NULL); 
     210 
     211                fsd_log_info(( "pbs_statjob( fd=%d, job_id=%s, attribs={...} ) =%p", self->connection_fd, job_id, (void*)status)); 
     212 
     213                if(status == NULL) 
     214                 { 
     215                        fsd_log_error(( "pbs_statjob failed, pbs_errno = %d", pbs_errno )); 
     216                        if (IS_TRANSIENT_ERROR && first_try) 
     217                         { 
     218                                pbsdrmaa_pbs_reconnect_internal(self, true); 
     219                                first_try = false; 
     220                                goto retry; 
     221                         } 
     222                        else 
     223                         { 
     224                                pbsdrmaa_exc_raise_pbs( "pbs_statjob"); 
     225                         } 
     226                 } 
     227         } 
     228        EXCEPT_DEFAULT 
     229         { 
     230                if( status != NULL ) 
     231                        pbs_statfree( status ); 
     232 
     233                fsd_exc_reraise(); 
     234         } 
     235        FINALLY 
     236         { 
     237                if(conn_lock) 
     238                        conn_lock = fsd_mutex_unlock(&self->session->super.drm_connection_mutex); 
     239         } 
     240        END_TRY 
     241 
     242 
     243        fsd_log_return(("")); 
     244 
     245        return status; 
    196246} 
    197247 
     
    199249pbsdrmaa_pbs_statjob_free( pbsdrmaa_pbs_conn_t *self, struct batch_status* job_status ) 
    200250{ 
    201  
    202  
    203 } 
    204  
    205 void  
    206 pbsdrmaa_pbs_sigjob( pbsdrmaa_pbs_conn_t *self, char *job_id, char *signal ) 
    207 { 
    208  
     251        fsd_log_enter(("")); 
     252 
     253        pbs_statfree( job_status ); 
     254} 
     255 
     256void  
     257pbsdrmaa_pbs_sigjob( pbsdrmaa_pbs_conn_t *self, char *job_id, char *signal_name ) 
     258{ 
     259        int rc = PBSE_NONE; 
     260        volatile bool first_try = true; 
     261        volatile bool conn_lock = false; 
     262 
     263 
     264        fsd_log_enter(("")); 
     265 
     266        TRY 
     267         { 
     268                conn_lock = fsd_mutex_lock(&self->session->super.drm_connection_mutex); 
     269 
     270                pbsdrmaa_pbs_reconnect_internal(self, false); 
     271 
     272retry: 
     273                rc = pbs_sigjob(self->connection_fd, job_id, signal_name, NULL); 
     274 
     275                fsd_log_info(( "pbs_sigjob( fd=%d, job_id=%s, signal_name=%s) = %d", self->connection_fd, job_id, signal_name, rc)); 
     276 
     277                if(rc != PBSE_NONE) 
     278                 { 
     279                        fsd_log_error(( "pbs_sigjob failed, pbs_errno = %d", pbs_errno )); 
     280                        if (IS_TRANSIENT_ERROR && first_try) 
     281                         { 
     282                                pbsdrmaa_pbs_reconnect_internal(self, true); 
     283                                first_try = false; 
     284                                goto retry; 
     285                         } 
     286                        else 
     287                         { 
     288                                pbsdrmaa_exc_raise_pbs( "pbs_sigjob"); 
     289                         } 
     290                 } 
     291         } 
     292        EXCEPT_DEFAULT 
     293         { 
     294                fsd_exc_reraise(); 
     295         } 
     296        FINALLY 
     297         { 
     298                if(conn_lock) 
     299                        conn_lock = fsd_mutex_unlock(&self->session->super.drm_connection_mutex); 
     300         } 
     301        END_TRY 
     302 
     303 
     304        fsd_log_return(("")); 
    209305 
    210306} 
     
    213309pbsdrmaa_pbs_deljob( pbsdrmaa_pbs_conn_t *self, char *job_id ) 
    214310{ 
    215  
     311        int rc = PBSE_NONE; 
     312        volatile bool first_try = true; 
     313        volatile bool conn_lock = false; 
     314 
     315 
     316        fsd_log_enter(("")); 
     317 
     318        TRY 
     319         { 
     320                conn_lock = fsd_mutex_lock(&self->session->super.drm_connection_mutex); 
     321 
     322                pbsdrmaa_pbs_reconnect_internal(self, false); 
     323 
     324retry: 
     325                rc = pbs_deljob(self->connection_fd, job_id, NULL); 
     326 
     327                fsd_log_info(( "pbs_deljob( fd=%d, job_id=%s) = %d", self->connection_fd, job_id, rc)); 
     328 
     329                if(rc != PBSE_NONE) 
     330                 { 
     331                        fsd_log_error(( "pbs_deljob failed, rc = %d, pbs_errno = %d", rc, pbs_errno )); 
     332                        if (IS_TRANSIENT_ERROR && first_try) 
     333                         { 
     334                                pbsdrmaa_pbs_reconnect_internal(self, true); 
     335                                first_try = false; 
     336                                goto retry; 
     337                         } 
     338                        else 
     339                         { 
     340                                pbsdrmaa_exc_raise_pbs( "pbs_deljob"); 
     341                         } 
     342                 } 
     343         } 
     344        EXCEPT_DEFAULT 
     345         { 
     346                fsd_exc_reraise(); 
     347         } 
     348        FINALLY 
     349         { 
     350                if(conn_lock) 
     351                        conn_lock = fsd_mutex_unlock(&self->session->super.drm_connection_mutex); 
     352         } 
     353        END_TRY 
     354 
     355 
     356        fsd_log_return(("")); 
    216357} 
    217358 
     
    219360pbsdrmaa_pbs_rlsjob( pbsdrmaa_pbs_conn_t *self, char *job_id ) 
    220361{ 
    221  
    222  
     362        int rc = PBSE_NONE; 
     363        volatile bool first_try = true; 
     364        volatile bool conn_lock = false; 
     365 
     366 
     367        fsd_log_enter(("")); 
     368 
     369        TRY 
     370         { 
     371                conn_lock = fsd_mutex_lock(&self->session->super.drm_connection_mutex); 
     372 
     373                pbsdrmaa_pbs_reconnect_internal(self, false); 
     374 
     375retry: 
     376                rc = pbs_rlsjob(self->connection_fd, job_id, USER_HOLD, NULL); 
     377 
     378                fsd_log_info(( "pbs_rlsjob( fd=%d, job_id=%s) = %d", self->connection_fd, job_id, rc)); 
     379 
     380                if(rc != PBSE_NONE) 
     381                 { 
     382                        fsd_log_error(( "pbs_rlsjob failed, rc = %d, pbs_errno = %d", rc,  pbs_errno )); 
     383                        if (IS_TRANSIENT_ERROR && first_try) 
     384                         { 
     385                                pbsdrmaa_pbs_reconnect_internal(self, true); 
     386                                first_try = false; 
     387                                goto retry; 
     388                         } 
     389                        else 
     390                         { 
     391                                pbsdrmaa_exc_raise_pbs( "pbs_rlsjob"); 
     392                         } 
     393                 } 
     394         } 
     395        EXCEPT_DEFAULT 
     396         { 
     397                fsd_exc_reraise(); 
     398         } 
     399        FINALLY 
     400         { 
     401                if(conn_lock) 
     402                        conn_lock = fsd_mutex_unlock(&self->session->super.drm_connection_mutex); 
     403         } 
     404        END_TRY 
     405 
     406 
     407        fsd_log_return(("")); 
    223408} 
    224409 
     
    226411pbsdrmaa_pbs_holdjob( pbsdrmaa_pbs_conn_t *self,  char *job_id ) 
    227412{ 
    228  
     413        int rc = PBSE_NONE; 
     414        volatile bool first_try = true; 
     415        volatile bool conn_lock = false; 
     416 
     417 
     418        fsd_log_enter(("")); 
     419 
     420        TRY 
     421         { 
     422                conn_lock = fsd_mutex_lock(&self->session->super.drm_connection_mutex); 
     423 
     424                pbsdrmaa_pbs_reconnect_internal(self, false); 
     425 
     426retry: 
     427                rc = pbs_holdjob(self->connection_fd, job_id, USER_HOLD, NULL); 
     428 
     429                fsd_log_info(( "pbs_holdjob( fd=%d, job_id=%s) = %d", self->connection_fd, job_id, rc)); 
     430 
     431                if(rc != PBSE_NONE) 
     432                 { 
     433                        fsd_log_error(( "pbs_holdjob failed, rc = %d, pbs_errno = %d", rc, pbs_errno )); 
     434                        if (IS_TRANSIENT_ERROR && first_try) 
     435                         { 
     436                                pbsdrmaa_pbs_reconnect_internal(self, true); 
     437                                first_try = false; 
     438                                goto retry; 
     439                         } 
     440                        else 
     441                         { 
     442                                pbsdrmaa_exc_raise_pbs( "pbs_holdjob"); 
     443                         } 
     444                 } 
     445         } 
     446        EXCEPT_DEFAULT 
     447         { 
     448                fsd_exc_reraise(); 
     449         } 
     450        FINALLY 
     451         { 
     452                if(conn_lock) 
     453                        conn_lock = fsd_mutex_unlock(&self->session->super.drm_connection_mutex); 
     454         } 
     455        END_TRY 
     456 
     457 
     458        fsd_log_return(("")); 
    229459} 
    230460 
Note: See TracChangeset for help on using the changeset viewer.