X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/23b6f6fb29fba9c2a7f9e6d9bf8d1ece35bc66f2..5dbcbc9fc104320252388249ad1fbb9984bb5339:/cookbooks/tile/templates/default/cleanup-tiles.erb?ds=sidebyside diff --git a/cookbooks/tile/templates/default/cleanup-tiles.erb b/cookbooks/tile/templates/default/cleanup-tiles.erb index 0f9bff288..5766b84cb 100644 --- a/cookbooks/tile/templates/default/cleanup-tiles.erb +++ b/cookbooks/tile/templates/default/cleanup-tiles.erb @@ -5,21 +5,22 @@ use strict; use warnings; +use File::Basename; use File::Temp qw(tmpnam); use Filesys::Df; use LockFile::Simple; my $tiledir = shift @ARGV; -my $lockmgr = LockFile::Simple->make(-autoclean => 1, -max => 0, -warn => 0); +my $lockmgr = LockFile::Simple->make(-autoclean => 1, -max => 1, -hold => 0, -warn => 0, -stale => 1); -$lockmgr->lock($tiledir) || exit 0; +$lockmgr->lock("${tiledir}/cleanup") || exit 0; 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", "+5", "-fprintf", $tempfile, "%A@ %p\n"); open(TILES, "-|", "sort", "-n", $tempfile) || die "Can't open $tempfile: $!"; @@ -34,6 +35,11 @@ if (df($tiledir)->{per} > 90) 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 { @@ -51,6 +57,6 @@ if (df($tiledir)->{per} > 90) unlink($tempfile); -$lockmgr->unlock($tiledir); +$lockmgr->unlock("${tiledir}/cleanup"); exit 0;