487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
|
# File 'lib/batch-kit/database/models.rb', line 487
def self.lock?(job_run, lock_name, lock_timeout, lock_holder = nil)
lock_expires_at = nil
self.dataset.db.transaction do
lock_rec = self.where(lock_name: lock_name).first
if lock_rec
if lock_rec.lock_expires_at < Time.now
self.where(lock_name: lock_name).delete
lock_rec = nil
else
lock_job = JobRun.join(Job, :job_id => :job_id).where(job_run: lock_rec.job_run).first
if lock_holder
lock_holder[:lock_expires_at] = lock_rec.lock_expires_at.getlocal
lock_holder[:lock_holder] = "job '#{lock_job[:job_name]}' (job run #{lock_rec.job_run})"
end
end
end
if lock_rec.nil?
lock_expires_at = Time.now + lock_timeout
if job_run.persist?
self.new(lock_name: lock_name, job_run: job_run.job_run_id,
lock_created_at: Time.now,
lock_expires_at: lock_expires_at).save
end
end
end
lock_expires_at
end
|