- Timestamp:
- 01/08/13 18:41:08 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/pbs_drmaa/pbs_conn.c
r83 r84 193 193 pbsdrmaa_pbs_statjob( pbsdrmaa_pbs_conn_t *self, char *job_id, struct attrl *attrib ) 194 194 { 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 208 retry: 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; 196 246 } 197 247 … … 199 249 pbsdrmaa_pbs_statjob_free( pbsdrmaa_pbs_conn_t *self, struct batch_status* job_status ) 200 250 { 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 256 void 257 pbsdrmaa_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 272 retry: 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(("")); 209 305 210 306 } … … 213 309 pbsdrmaa_pbs_deljob( pbsdrmaa_pbs_conn_t *self, char *job_id ) 214 310 { 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 324 retry: 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(("")); 216 357 } 217 358 … … 219 360 pbsdrmaa_pbs_rlsjob( pbsdrmaa_pbs_conn_t *self, char *job_id ) 220 361 { 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 375 retry: 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(("")); 223 408 } 224 409 … … 226 411 pbsdrmaa_pbs_holdjob( pbsdrmaa_pbs_conn_t *self, char *job_id ) 227 412 { 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 426 retry: 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(("")); 229 459 } 230 460
Note: See TracChangeset
for help on using the changeset viewer.