Commit 7b5f6d8c733c4753e78832e7da6d7f5556dea7dc

Lock file is now a PID lock file - checks for stale lock file & PID

Commit diff

script/task_performer

 
66LOCK_FILE_PATH = File.join(Dir.tmpdir, "gitorious_task_lockfile")
77ENV["PATH"] = "/usr/local/bin/:/opt/local/bin:#{ENV["PATH"]}"
88
9if File.exist?(LOCK_FILE_PATH)
10 $stderr.puts "Task lockfile '#{LOCK_FILE_PATH}' exists!"
11 exit(1)
12end
13
149ENV["RAILS_ENV"] ||= "production"
1510require File.dirname(__FILE__) + "/../config/environment"
1611
17
1812class TaskLockError < StandardError; end
1913
2014def with_lock(&block)
2115 begin
2216 if File.exist?(LOCK_FILE_PATH)
23 raise TaskLockError
17 pid = IO.read( LOCK_FILE_PATH ).to_i
18 if File.directory?("/proc/#{pid}/")
19 raise TaskLockError
20 else # STALE LOCK FILE
21 FileUtils.rm(LOCK_FILE_PATH)
22 end
2423 end
25 FileUtils.touch(LOCK_FILE_PATH)
24 File.open(LOCK_FILE_PATH,'w') { |f| f << $$ }
2625 yield
26 FileUtils.rm(LOCK_FILE_PATH) if File.exist?(LOCK_FILE_PATH)
2727 rescue TaskLockError
28 $stderr.puts "Task lockfile exists"
28 $stderr.puts "Task lockfile exists - long running task_performer?"
2929 exit(1)
30 ensure
31 FileUtils.rm(LOCK_FILE_PATH)
3230 end
3331end
3432
toggle raw diff