void BaseShadow::shutDown( int reason ) { // exit now if there is no job ad if ( !getJobAd() ) { DC_Exit( reason ); } // if we are being called from the exception handler, return // now to prevent infinite loop in case we call EXCEPT below. if ( reason == JOB_EXCEPTION ) { return; } // Only if the job is trying to leave the queue should we // evaluate the user job policy... if( reason == JOB_EXITED || reason == JOB_COREDUMPED ) { if( !waitingToUpdateSchedd() ) { shadow_user_policy.checkAtExit(); // WARNING: 'this' may have been deleted by the time we get here!!! } } else { // if we aren't trying to evaluate the user's policy, we just // want to evict this job. evictJob( reason ); } }
bool BaseShadow::jobWantsGracefulRemoval() { bool job_wants_graceful_removal = false; ClassAd *thejobAd = getJobAd(); if( thejobAd ) { thejobAd->LookupBool( ATTR_WANT_GRACEFUL_REMOVAL, job_wants_graceful_removal ); } return job_wants_graceful_removal; }
bool BaseShadow::jobWantsGracefulRemoval() { if ( m_force_fast_starter_shutdown ) { return false; } bool job_wants_graceful_removal = param_boolean("GRACEFULLY_REMOVE_JOBS", true); bool job_request; ClassAd *thejobAd = getJobAd(); if( thejobAd ) { if( thejobAd->LookupBool( ATTR_WANT_GRACEFUL_REMOVAL, job_request ) ) { job_wants_graceful_removal = job_request; } } return job_wants_graceful_removal; }