class Deb::S3::Lock
Attributes
host[RW]
user[RW]
Public Class Methods
current(codename, component = nil, architecture = nil, cache_control = nil)
click to toggle source
# File lib/deb/s3/lock.rb, line 43 def current(codename, component = nil, architecture = nil, cache_control = nil) lock_content = Deb::S3::Utils.s3_read(lock_path(codename, component, architecture, cache_control)) lock_content = lock_content.split('@') lock = Deb::S3::Lock.new lock.user = lock_content[0] lock.host = lock_content[1] if lock_content.size > 1 lock end
lock(codename, component = nil, architecture = nil, cache_control = nil)
click to toggle source
# File lib/deb/s3/lock.rb, line 28 def lock(codename, component = nil, architecture = nil, cache_control = nil) lockfile = Tempfile.new("lockfile") lockfile.write("#{Etc.getlogin}@#{Socket.gethostname}") lockfile.close Deb::S3::Utils.s3_store(lockfile.path, lock_path(codename, component, architecture, cache_control), "text/plain", cache_control) end
locked?(codename, component = nil, architecture = nil, cache_control = nil)
click to toggle source
# File lib/deb/s3/lock.rb, line 15 def locked?(codename, component = nil, architecture = nil, cache_control = nil) Deb::S3::Utils.s3_exists?(lock_path(codename, component, architecture, cache_control)) end
new()
click to toggle source
# File lib/deb/s3/lock.rb, line 9 def initialize @user = nil @host = nil end
unlock(codename, component = nil, architecture = nil, cache_control = nil)
click to toggle source
# File lib/deb/s3/lock.rb, line 39 def unlock(codename, component = nil, architecture = nil, cache_control = nil) Deb::S3::Utils.s3_remove(lock_path(codename, component, architecture, cache_control)) end
wait_for_lock(codename, component = nil, architecture = nil, cache_control = nil, max_attempts=60, wait=10)
click to toggle source
# File lib/deb/s3/lock.rb, line 19 def wait_for_lock(codename, component = nil, architecture = nil, cache_control = nil, max_attempts=60, wait=10) attempts = 0 while self.locked?(codename, component, architecture, cache_control) do attempts += 1 throw "Unable to obtain a lock after #{max_attempts}, giving up." if attempts > max_attempts sleep(wait) end end
Private Class Methods
lock_path(codename, component = nil, architecture = nil, cache_control = nil)
click to toggle source
# File lib/deb/s3/lock.rb, line 53 def lock_path(codename, component = nil, architecture = nil, cache_control = nil) "dists/#{codename}/#{component}/binary-#{architecture}/lockfile" end