From 8b8a8c560ca517ecd8bea08540ffc7728217b4b1 Mon Sep 17 00:00:00 2001 From: Ward Wouts Date: Fri, 30 Jan 2009 09:08:44 +0000 Subject: [PATCH] locking++ --- pbatch/pb.rb | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/pbatch/pb.rb b/pbatch/pb.rb index c5f9f7f..61ac495 100755 --- a/pbatch/pb.rb +++ b/pbatch/pb.rb @@ -79,24 +79,34 @@ end def increasejobscounter jobscounter = 0 - if File.exists(COUNTERFILE) - File.new(COUNTERFILE, "r+").flock(File::LOCK_EX){|file| - jobscounter = file.read.to_i + if FileTest.exists?(COUNTERFILE) + File.new(COUNTERFILE).flock(File::LOCK_EX) + File.open(COUNTERFILE, "r+"){|file| + jobscounter = file.read + if jobscounter.empty? + jobscounter = 0 + end + jobscounter = jobscounter.to_i jobscounter += 1 file.seek(0) file.puts jobscounter } + File.new(COUNTERFILE, "r+").flock(File::LOCK_UN) else - File.new(COUNTERFILE, "w").flock(File::LOCK_EX){|file| + File.open(COUNTERFILE, "w"){|file| + File.new(COUNTERFILE).flock(File::LOCK_EX) jobscounter = 1 file.puts jobscounter } + File.new(COUNTERFILE, "r+").flock(File::LOCK_UN) end return jobscounter end def addjob p ARGV.join(" ") + jobnumber=sprintf("%06d", increasejobscounter) + p jobnumber end def addjobfromfile