X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/85b3023748f27b456a308eff4d61d9149efd32d0..b88032f37b95d57ed9d27d31eee1afaa3e158e02:/cookbooks/tile/templates/default/cleanup-tiles.erb diff --git a/cookbooks/tile/templates/default/cleanup-tiles.erb b/cookbooks/tile/templates/default/cleanup-tiles.erb index e58e0bdbf..9adf02aeb 100644 --- a/cookbooks/tile/templates/default/cleanup-tiles.erb +++ b/cookbooks/tile/templates/default/cleanup-tiles.erb @@ -7,17 +7,23 @@ use warnings; use File::Temp qw(tmpnam); use Filesys::Df; +use LockFile::Simple; my $tiledir = shift @ARGV; + +my $lockmgr = LockFile::Simple->make(-autoclean => 1, -max => 1, -warn => 0); + +$lockmgr->lock("${tiledir}/cleanup") || exit 0; + my $tempfile = tmpnam(); if (df($tiledir)->{per} > 90) { - system("find", $tiledir, "-xdev", "-type", "f", "-name", "*.meta", "-atime", "+60", "-fprintf", $tempfile, "%A@ %p\n"); + system("find", $tiledir, "-xdev", "-type", "f", "-name", "*.meta", "-atime", "+35", "-fprintf", $tempfile, "%A@ %p\n"); open(TILES, "-|", "sort", "-n", $tempfile) || die "Can't open $tempfile: $!"; - while (df($tiledir)->{per} > 80 && ! eof(TILES)) + while (df($tiledir)->{per} > 80) { for my $n (1..1000) { @@ -29,12 +35,22 @@ if (df($tiledir)->{per} > 90) unlink($tile) || warn "Can't remove $tile: $!"; } + else + { + goto done; + } } } + done: + close(TILES); + + warn "Tile expiry finished before threshold reached" if df($tiledir)->{per} > 80; } unlink($tempfile); +$lockmgr->unlock("${tiledir}/cleanup"); + exit 0;