Changeset 29 for trunk


Ignore:
Timestamp:
10/31/12 14:10:21 (12 years ago)
Author:
mmamonski
Message:

bump version, avoid segault on missing jobs

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/configure.ac

    r25 r29  
    1 AC_INIT([PSNC DRMAA for SLURM], [1.0.5], [mamonski@man.poznan.pl], [slurm-drmaa]) 
     1AC_INIT([PSNC DRMAA for SLURM], [1.0.6], [mamonski@man.poznan.pl], [slurm-drmaa]) 
    22AC_PREREQ(2.59) 
    33AC_REVISION([$Id$]) 
     
    2323SLURM_DRMAA_MAJOR=1 
    2424SLURM_DRMAA_MINOR=0 
    25 SLURM_DRMAA_MICRO=5 
    26 SLURM_DRMAA_VERSION_INFO=1:5:0 
     25SLURM_DRMAA_MICRO=6 
     26SLURM_DRMAA_VERSION_INFO=1:6:0 
    2727AC_SUBST([SLURM_DRMAA_MAJOR]) 
    2828AC_SUBST([SLURM_DRMAA_MINOR]) 
  • trunk/slurm_drmaa/job.c

    r27 r29  
    121121                                self->on_missing(self); 
    122122                        } else { 
    123                                 fsd_exc_raise_fmt(      FSD_ERRNO_INTERNAL_ERROR,"slurm_load_jobs error: %s,job_id: %s", slurm_strerror(slurm_get_errno()), self->job_id); 
    124                         } 
    125                 } 
     123                                fsd_exc_raise_fmt(FSD_ERRNO_INTERNAL_ERROR,"slurm_load_jobs error: %s,job_id: %s", slurm_strerror(slurm_get_errno()), self->job_id); 
     124                        } 
     125                } 
     126                if (job_info) { 
     127                        fsd_log_debug(("state = %d, state_reason = %d", job_info->job_array[0].job_state, job_info->job_array[0].state_reason)); 
     128                         
     129                        switch(job_info->job_array[0].job_state & JOB_STATE_BASE) 
     130                        { 
     131 
     132                                case JOB_PENDING: 
     133                                        switch(job_info->job_array[0].state_reason) 
     134                                        { 
     135                                                #if SLURM_VERSION_NUMBER >= SLURM_VERSION_NUM(2,2,0) 
     136                                                case WAIT_HELD_USER:   /* job is held by user */ 
     137                                                        fsd_log_debug(("interpreting as DRMAA_PS_USER_ON_HOLD")); 
     138                                                        self->state = DRMAA_PS_USER_ON_HOLD; 
     139                                                        break; 
     140                                                #endif 
     141                                                case WAIT_HELD:  /* job is held by administrator */ 
     142                                                        fsd_log_debug(("interpreting as DRMAA_PS_SYSTEM_ON_HOLD")); 
     143                                                        self->state = DRMAA_PS_SYSTEM_ON_HOLD; 
     144                                                        break; 
     145                                                default: 
     146                                                        fsd_log_debug(("interpreting as DRMAA_PS_QUEUED_ACTIVE")); 
     147                                                        self->state = DRMAA_PS_QUEUED_ACTIVE; 
     148                                        } 
     149                                        break; 
     150                                case JOB_RUNNING: 
     151                                        fsd_log_debug(("interpreting as DRMAA_PS_RUNNING")); 
     152                                        self->state = DRMAA_PS_RUNNING; 
     153                                        break; 
     154                                case JOB_SUSPENDED: 
     155                                        if(slurm_self->user_suspended == true) { 
     156                                                fsd_log_debug(("interpreting as DRMAA_PS_USER_SUSPENDED")); 
     157                                                self->state = DRMAA_PS_USER_SUSPENDED; 
     158                                        } else { 
     159                                                fsd_log_debug(("interpreting as DRMAA_PS_SYSTEM_SUSPENDED")); 
     160                                                self->state = DRMAA_PS_SYSTEM_SUSPENDED; 
     161                                        } 
     162                                        break; 
     163                                case JOB_COMPLETE: 
     164                                        fsd_log_debug(("interpreting as DRMAA_PS_DONE")); 
     165                                        self->state = DRMAA_PS_DONE; 
     166                                        self->exit_status = job_info->job_array[0].exit_code; 
     167                                        fsd_log_debug(("exit_status = %d -> %d",self->exit_status, WEXITSTATUS(self->exit_status))); 
     168                                        break; 
     169                                case JOB_CANCELLED: 
     170                                        fsd_log_debug(("interpreting as DRMAA_PS_FAILED (aborted)")); 
     171                                        self->state = DRMAA_PS_FAILED; 
     172                                        self->exit_status = -1; 
     173                                case JOB_FAILED: 
     174                                case JOB_TIMEOUT: 
     175                                case JOB_NODE_FAIL: 
     176                                #if SLURM_VERSION_NUMBER >= SLURM_VERSION_NUM(2,3,0) 
     177                                case JOB_PREEMPTED: 
     178                                #endif 
     179                                        fsd_log_debug(("interpreting as DRMAA_PS_FAILED")); 
     180                                        self->state = DRMAA_PS_FAILED; 
     181                                        self->exit_status = job_info->job_array[0].exit_code; 
     182                                        fsd_log_debug(("exit_status = %d -> %d",self->exit_status, WEXITSTATUS(self->exit_status))); 
     183                                        break; 
     184                                default: /*unknown state */ 
     185                                        fsd_log_error(("Unknown job state: %d. Please send bug report: http://apps.man.poznan.pl/trac/slurm-drmaa", job_info->job_array[0].job_state)); 
     186                        } 
     187 
     188                        if (job_info->job_array[0].job_state & JOB_STATE_FLAGS & JOB_COMPLETING) { 
     189                                fsd_log_debug(("Epilog completing")); 
     190                        } 
     191 
     192                        if (job_info->job_array[0].job_state & JOB_STATE_FLAGS & JOB_CONFIGURING) { 
     193                                fsd_log_debug(("Nodes booting")); 
     194                        } 
     195 
     196                        if (self->exit_status == -1) /* input,output,error path failure etc*/ 
     197                                self->state = DRMAA_PS_FAILED; 
     198 
     199                        self->last_update_time = time(NULL); 
    126200                 
    127                 switch(job_info->job_array[0].job_state & JOB_STATE_BASE) 
    128                 { 
    129                         fsd_log_debug(("state = %d, state_reason = %d", job_info->job_array[0].job_state, job_info->job_array[0].state_reason)); 
    130  
    131                         case JOB_PENDING: 
    132                                 switch(job_info->job_array[0].state_reason) 
    133                                 { 
    134                                         #if SLURM_VERSION_NUMBER >= SLURM_VERSION_NUM(2,2,0) 
    135                                         case WAIT_HELD_USER:   /* job is held by user */ 
    136                                                 fsd_log_debug(("interpreting as DRMAA_PS_USER_ON_HOLD")); 
    137                                                 self->state = DRMAA_PS_USER_ON_HOLD; 
    138                                                 break; 
    139                                         #endif 
    140                                         case WAIT_HELD:  /* job is held by administrator */ 
    141                                                 fsd_log_debug(("interpreting as DRMAA_PS_SYSTEM_ON_HOLD")); 
    142                                                 self->state = DRMAA_PS_SYSTEM_ON_HOLD; 
    143                                                 break; 
    144                                         default: 
    145                                                 fsd_log_debug(("interpreting as DRMAA_PS_QUEUED_ACTIVE")); 
    146                                                 self->state = DRMAA_PS_QUEUED_ACTIVE; 
    147                                 } 
    148                                 break; 
    149                         case JOB_RUNNING: 
    150                                 fsd_log_debug(("interpreting as DRMAA_PS_RUNNING")); 
    151                                 self->state = DRMAA_PS_RUNNING; 
    152                                 break; 
    153                         case JOB_SUSPENDED: 
    154                                 if(slurm_self->user_suspended == true) { 
    155                                         fsd_log_debug(("interpreting as DRMAA_PS_USER_SUSPENDED")); 
    156                                         self->state = DRMAA_PS_USER_SUSPENDED; 
    157                                 } else { 
    158                                         fsd_log_debug(("interpreting as DRMAA_PS_SYSTEM_SUSPENDED")); 
    159                                         self->state = DRMAA_PS_SYSTEM_SUSPENDED; 
    160                                 } 
    161                                 break; 
    162                         case JOB_COMPLETE: 
    163                                 fsd_log_debug(("interpreting as DRMAA_PS_DONE")); 
    164                                 self->state = DRMAA_PS_DONE; 
    165                                 self->exit_status = job_info->job_array[0].exit_code; 
    166                                 fsd_log_debug(("exit_status = %d -> %d",self->exit_status, WEXITSTATUS(self->exit_status))); 
    167                                 break; 
    168                         case JOB_CANCELLED: 
    169                                 fsd_log_debug(("interpreting as DRMAA_PS_FAILED (aborted)")); 
    170                                 self->state = DRMAA_PS_FAILED; 
    171                                 self->exit_status = -1; 
    172                         case JOB_FAILED: 
    173                         case JOB_TIMEOUT: 
    174                         case JOB_NODE_FAIL: 
    175                         #if SLURM_VERSION_NUMBER >= SLURM_VERSION_NUM(2,3,0) 
    176                         case JOB_PREEMPTED: 
    177                         #endif 
    178                                 fsd_log_debug(("interpreting as DRMAA_PS_FAILED")); 
    179                                 self->state = DRMAA_PS_FAILED; 
    180                                 self->exit_status = job_info->job_array[0].exit_code; 
    181                                 fsd_log_debug(("exit_status = %d -> %d",self->exit_status, WEXITSTATUS(self->exit_status))); 
    182                                 break; 
    183                         default: /*unknown state */ 
    184                                 fsd_log_error(("Unknown job state: %d. Please send bug report: http://apps.man.poznan.pl/trac/slurm-drmaa", job_info->job_array[0].job_state)); 
    185                 } 
    186  
    187                 if (job_info->job_array[0].job_state & JOB_STATE_FLAGS & JOB_COMPLETING) { 
    188                         fsd_log_debug(("Epilog completing")); 
    189                 } 
    190  
    191                 if (job_info->job_array[0].job_state & JOB_STATE_FLAGS & JOB_CONFIGURING) { 
    192                         fsd_log_debug(("Nodes booting")); 
    193                 } 
    194  
    195                 if (self->exit_status == -1) /* input,output,error path failure etc*/ 
    196                         self->state = DRMAA_PS_FAILED; 
    197  
    198                 self->last_update_time = time(NULL); 
    199          
    200                 if( self->state >= DRMAA_PS_DONE ) { 
    201                         fsd_log_debug(("exit_status = %d, WEXITSTATUS(exit_status) = %d", self->exit_status, WEXITSTATUS(self->exit_status))); 
    202                         fsd_cond_broadcast( &self->status_cond ); 
     201                        if( self->state >= DRMAA_PS_DONE ) { 
     202                                fsd_log_debug(("exit_status = %d, WEXITSTATUS(exit_status) = %d", self->exit_status, WEXITSTATUS(self->exit_status))); 
     203                                fsd_cond_broadcast( &self->status_cond ); 
     204                        } 
    203205                } 
    204206        } 
  • trunk/slurm_drmaa/util.c

    r28 r29  
    9494        else if (strcasecmp(mail_type_str, "FAIL") == 0) 
    9595                rc = MAIL_JOB_FAIL; 
     96#if SLURM_VERSION_NUMBER >= SLURM_VERSION_NUM(2,2,0) 
    9697        else if (strcasecmp(mail_type_str, "REQUEUE") == 0) 
    9798                rc = MAIL_JOB_REQUEUE; 
     99#endif 
    98100        else if (strcasecmp(mail_type_str, "ALL") == 0) 
     101#if SLURM_VERSION_NUMBER >= SLURM_VERSION_NUM(2,2,0) 
    99102                rc = MAIL_JOB_BEGIN | MAIL_JOB_END | MAIL_JOB_FAIL | MAIL_JOB_REQUEUE; 
    100         else 
    101                 rc = 0; /* failure */ 
     103#else 
     104                rc = MAIL_JOB_BEGIN | MAIL_JOB_END | MAIL_JOB_FAIL; 
     105#endif 
     106        else { 
     107                fsd_log_error(("Unknown mail type: %s", mail_type_str)); 
     108        } 
    102109 
    103110        return rc; 
     
    163170        fsd_free(job_desc->std_err);     
    164171        fsd_free(job_desc->work_dir); 
     172        fsd_free(job_desc->exc_nodes); 
     173#if SLURM_VERSION_NUMBER >= SLURM_VERSION_NUM(2,2,0) 
    165174        fsd_free(job_desc->gres); 
    166         fsd_free(job_desc->exc_nodes); 
    167  
     175#endif 
    168176         
    169177        fsd_log_return(( "" )); 
     
    309317                        break;   
    310318                case SLURM_NATIVE_GRES: 
     319                        #if SLURM_VERSION_NUMBER >= SLURM_VERSION_NUM(2,2,0) 
    311320                        fsd_log_debug(("# gres = %s",value)); 
    312321                        job_desc->gres = fsd_strdup(value); 
     322                        #else 
     323                        fsd_log_error(("GRES not supported in this version of SLURM.")); 
     324                        #endif 
    313325                        break; 
    314326                case SLURM_NATIVE_NO_KILL: 
Note: See TracChangeset for help on using the changeset viewer.