Changeset 29 for trunk/slurm_drmaa/job.c
- Timestamp:
- 10/31/12 14:10:21 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/slurm_drmaa/job.c
r27 r29 121 121 self->on_missing(self); 122 122 } 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); 126 200 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 } 203 205 } 204 206 }
Note: See TracChangeset
for help on using the changeset viewer.