X-Git-Url: http://git.ieval.ro/?p=gruntmaster-daemon.git;a=blobdiff_plain;f=lib%2FGruntmaster%2FDaemon%2FBase.pm;h=3f6416c858534d78b6e6a405ef64c72f4fe8fbe8;hp=b7db7892c30b72c1a8e22fc201d1b8f52d3049fe;hb=ddceb393c90f620dd194c22e5e85d8c9fe87ee34;hpb=5c5cd38ad5b9e3c2b331564bc0b23e9167b7d07a diff --git a/lib/Gruntmaster/Daemon/Base.pm b/lib/Gruntmaster/Daemon/Base.pm index b7db789..3f6416c 100644 --- a/lib/Gruntmaster/Daemon/Base.pm +++ b/lib/Gruntmaster/Daemon/Base.pm @@ -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 $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{