Sha256: 5093b27c4942db5432f415c2d686ca1e09156c19bd3a7cd538c31d159d7cc4cf
Contents?: true
Size: 1.01 KB
Versions: 381
Compression:
Stored size: 1.01 KB
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 pid = @lockfile.lock_data begin Integer(pid) rescue ArgumentError, TypeError nil end end def file_path @lockfile.file_path end def clear_if_stale return @lockfile.unlock if lock_pid.nil? errors = [Errno::ESRCH] # Win32::Process now throws SystemCallError. Since this could be # defined anywhere, only add when on Windows. errors << SystemCallError if Puppet::Util::Platform.windows? begin Process.kill(0, lock_pid) rescue *errors @lockfile.unlock end end private :clear_if_stale end
Version data entries
381 entries across 381 versions & 3 rubygems