]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/tile/templates/default/cleanup-tiles.erb
Run the OTRS daemon as a systemd service
[chef.git] / cookbooks / tile / templates / default / cleanup-tiles.erb
index 9209a2644d8116663b16cbfc60b951ba52981625..721660bb16795b234bf5779c91e76b099578f11d 100644 (file)
@@ -5,19 +5,22 @@
 use strict;
 use warnings;
 
 use strict;
 use warnings;
 
+use File::Basename;
 use File::Temp qw(tmpnam);
 use Filesys::Df;
 use File::Temp qw(tmpnam);
 use Filesys::Df;
-use LockFile::Simple qw(lock unlock);
+use LockFile::Simple;
 
 my $tiledir = shift @ARGV;
 
 
 my $tiledir = shift @ARGV;
 
-lock($tiledir) || exit 0;
+my $lockmgr = LockFile::Simple->make(-autoclean => 1, -max => 1, -hold => 0, -warn => 0, -stale => 1);
+
+$lockmgr->lock("${tiledir}/cleanup") || exit 0;
 
 my $tempfile = tmpnam();
 
 
 my $tempfile = tmpnam();
 
-if (df($tiledir)->{per} > 90)
+if (df($tiledir)->{per} > 88)
 {
 {
-    system("find", $tiledir, "-xdev", "-type", "f", "-name", "*.meta", "-atime", "+35", "-fprintf", $tempfile, "%A@ %p\n");
+    system("find", $tiledir, "-xdev", "-name", "lost+found", "-prune", "-o", "-type", "f", "-name", "*.meta", "-atime", "+2", "-fprintf", $tempfile, "%A@ %p\n");
 
     open(TILES, "-|", "sort", "-n", $tempfile) || die "Can't open $tempfile: $!";
 
 
     open(TILES, "-|", "sort", "-n", $tempfile) || die "Can't open $tempfile: $!";
 
@@ -32,6 +35,11 @@ if (df($tiledir)->{per} > 90)
                 my($time,$tile) = split(/ /, $line);
 
                 unlink($tile) || warn "Can't remove $tile: $!";
                 my($time,$tile) = split(/ /, $line);
 
                 unlink($tile) || warn "Can't remove $tile: $!";
+
+                for (my $dir = dirname($tile); $dir ne $tiledir; $dir = dirname($dir))
+                {
+                    rmdir($dir);
+                }
             }
             else
             {
             }
             else
             {
@@ -49,6 +57,6 @@ if (df($tiledir)->{per} > 90)
 
 unlink($tempfile);
 
 
 unlink($tempfile);
 
-unlock($tiledir);
+$lockmgr->unlock("${tiledir}/cleanup");
 
 exit 0;
 
 exit 0;