Sha256: 0c1423ed3a65a33541855d23a32c5ac60f993711f105699e4f6d3dc46672f726
Contents?: true
Size: 882 Bytes
Versions: 32
Compression:
Stored size: 882 Bytes
Contents
require 'fileutils' require 'puppet/util/lockfile' class Puppet::Util::Pidlock def initialize(lockfile) @lockfile = Puppet::Util::Lockfile.new(lockfile) end def locked? clear_if_stale @lockfile.locked? end def mine? Process.pid == lock_pid end def lock return mine? if locked? @lockfile.lock(Process.pid) end def unlock() if mine? return @lockfile.unlock else false end end def lock_pid @lockfile.lock_data.to_i end def file_path @lockfile.file_path end def clear_if_stale return if lock_pid.nil? errors = [Errno::ESRCH] # Process::Error can only happen, and is only defined, on Windows errors << Process::Error if defined? Process::Error begin Process.kill(0, lock_pid) rescue *errors @lockfile.unlock end end private :clear_if_stale end
Version data entries
32 entries across 32 versions & 1 rubygems