Use flock in ::Base instead of O_EXCL
authorMarius Gavrilescu <marius@ieval.ro>
Mon, 2 Dec 2013 14:38:27 +0000 (16:38 +0200)
committerMarius Gavrilescu <marius@ieval.ro>
Mon, 2 Dec 2013 14:38:27 +0000 (16:38 +0200)
lib/Gruntmaster/Daemon.pm
lib/Gruntmaster/Daemon/Base.pm

index ebab95cd5db8aa27dfc1c1996d50012d78fbc45d..ccf9e4e213f10f88076fec3bd2de6154b5936f34 100644 (file)
@@ -55,7 +55,7 @@ sub process{
   chdir $dir;
   mkdir "in";
   for (<*>) {
-       cp $_, "in" unless $_ eq 'in' || $_ eq 'pidfile';
+       cp $_, "in" unless $_ eq 'in';
   }
 
   my @results;
index b7db7892c30b72c1a8e22fc201d1b8f52d3049fe..d63ddee874b8161bfff4784d7525dd38d9fad2b1 100644 (file)
@@ -7,7 +7,7 @@ use parent qw/Exporter/;
 our @EXPORT_OK = qw/watch/;
 our $VERSION = '0.001';
 
-use Fcntl qw/O_WRONLY O_EXCL O_CREAT/;
+use Fcntl qw/:flock/;
 use Linux::Inotify2;
 use Log::Log4perl qw/get_logger/;
 
@@ -17,12 +17,14 @@ sub process{
   my ($name, $dir, $cb) = @_;
   my $logger = get_logger;
   $logger->debug("Taking job $name...");
-  if (sysopen my $file, "$dir/$name/pidfile", O_WRONLY | O_EXCL | O_CREAT){
+  open my $file, ">>$dir/$name/meta.yml";
+  if (flock my $file, LOCK_EX|LOCK_NB){
        $logger->debug("Successfully taken job $name, executing callback");
        $cb->("$dir/$name");
   } else {
        $logger->debug("Job $name already taken");
   }
+  close $file;
 }
 
 sub watch{
This page took 0.013507 seconds and 4 git commands to generate.