class DRMAA::Session

DRMAA Session

Attributes

retry[RW]

Public Class Methods

new(contact = "") click to toggle source

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

finalize(id) click to toggle source

close DRMAA session

# File lib/ood_core/job/adapters/drmaa.rb, line 728
def finalize(id)
    # STDERR.puts "... exiting DRMAA"
    DRMAA.exit
end
hold(job = ALL_JOBS) click to toggle source

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
job_ps(job) click to toggle source

get job state

# File lib/ood_core/job/adapters/drmaa.rb, line 843
def job_ps(job)
    DRMAA.job_ps(job)
end
release(job = ALL_JOBS) click to toggle source

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(job = ALL_JOBS) click to toggle source

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
retry_until() { || ... } click to toggle source

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
run(t) click to toggle source

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
run_bulk(t, first, last, incr = 1) click to toggle source

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(job = ALL_JOBS) click to toggle source

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
sync(jobs, timeout = -1) click to toggle source

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
sync!(jobs, timeout = -1) click to toggle source

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
sync_all(timeout = -1, dispose = false) click to toggle source

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
sync_all!(timeout = -1) click to toggle source

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(job = ALL_JOBS) click to toggle source

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(job, timeout = -1) click to toggle source

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_any(timeout = -1) click to toggle source

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
wait_each(timeout = -1) { |info| ... } click to toggle source

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