class DRMAA::Session
Attributes
Public Class Methods
initialize DRMAA
session
# File lib/ood_core/job/adapters/drmaa.rb, line 721 def initialize(contact = "") DRMAA.init(contact) ObjectSpace.define_finalizer(self, self.method(:finalize).to_proc) @retry = 0 end
Public Instance Methods
close DRMAA
session
# File lib/ood_core/job/adapters/drmaa.rb, line 728 def finalize(id) # STDERR.puts "... exiting DRMAA" DRMAA.exit end
put specified job or all session jobs in hold state
# File lib/ood_core/job/adapters/drmaa.rb, line 828 def hold(job = ALL_JOBS) DRMAA.control(job, DRMAA::ACTION_HOLD) end
get job state
# File lib/ood_core/job/adapters/drmaa.rb, line 843 def job_ps(job) DRMAA.job_ps(job) end
release hold state for specified job or all session jobs
# File lib/ood_core/job/adapters/drmaa.rb, line 833 def release(job = ALL_JOBS) DRMAA.control(job, DRMAA::ACTION_RELEASE) end
resume specified job or all session jobs
# File lib/ood_core/job/adapters/drmaa.rb, line 823 def resume(job = ALL_JOBS) DRMAA.control(job, DRMAA::ACTION_RESUME) end
non-zero retry interval causes DRMAA::DRMAATryLater
be handled transparently
# File lib/ood_core/job/adapters/drmaa.rb, line 734 def retry_until if @retry == 0 job = yield else begin job = yield rescue DRMAA::DRMAATryLater STDERR.puts "... sleeping" sleep @retry retry end end return job end
submits job described by JobTemplate
't' and returns job id as string
# File lib/ood_core/job/adapters/drmaa.rb, line 750 def run(t) retry_until { DRMAA.run_job(t.ptr) } end
submits bulk job described by JobTemplate
't' and returns an array of job id strings
# File lib/ood_core/job/adapters/drmaa.rb, line 756 def run_bulk(t, first, last, incr = 1) retry_until { DRMAA.run_bulk_jobs(t.ptr, first, last, incr) } end
suspend specified job or all session jobs
# File lib/ood_core/job/adapters/drmaa.rb, line 818 def suspend(job = ALL_JOBS) DRMAA.control(job, DRMAA::ACTION_SUSPEND) end
synchronize with specified session jobs returns false in case of a timeout
# File lib/ood_core/job/adapters/drmaa.rb, line 813 def sync(jobs, timeout = -1) DRMAA.synchronize(jobs, timeout, false) end
synchronize with specified session jobs and dispose any job finish information returns false in case of a timeout
# File lib/ood_core/job/adapters/drmaa.rb, line 807 def sync!(jobs, timeout = -1) DRMAA.synchronize(jobs, timeout, true) end
synchronize with all session jobs returns false in case of a timeout
# File lib/ood_core/job/adapters/drmaa.rb, line 801 def sync_all(timeout = -1, dispose = false) DRMAA.synchronize([ ALL_JOBS ], timeout, dispose) end
synchronize with all session jobs and dispose any job finish information returns false in case of a timeout
# File lib/ood_core/job/adapters/drmaa.rb, line 795 def sync_all!(timeout = -1) DRMAA.synchronize([ ALL_JOBS ], timeout, true) end
terminate specified job or all session jobs
# File lib/ood_core/job/adapters/drmaa.rb, line 838 def terminate(job = ALL_JOBS) DRMAA.control(job, DRMAA::ACTION_TERMINATE) end
wait for job and return JobInfo
# File lib/ood_core/job/adapters/drmaa.rb, line 766 def wait(job, timeout = -1) DRMAA.wait(job, timeout) end
wait for any job of this session and return JobInfo
# File lib/ood_core/job/adapters/drmaa.rb, line 761 def wait_any(timeout = -1) DRMAA.wait(ANY_JOB, timeout) end
run block with JobInfo
to finish for each waited session job or return JobInfo
array if no block was passed
# File lib/ood_core/job/adapters/drmaa.rb, line 772 def wait_each(timeout = -1) if ! block_given? ary = Array.new end while true begin info = DRMAA.wait(ANY_JOB, timeout) rescue DRMAAInvalidJobError break end if block_given? yield info else ary << info end end if ! block_given? return ary end end