AC-MrGamoo
view release on metacpan or search on metacpan
lib/AC/MrGamoo/Job/Done.pm view on Meta::CPAN
$me->{_cleanedup} = 1;
$me->{statistics}{cleanup_start} = time();
$me->{statistics}{job_time} = time() - $me->{statistics}{job_start};
$me->{euconsole}->send_msg('debug', 'cleaning up');
$me->{euconsole}->send_msg('finish', 'finish');
# remove tmp files
for my $fi (@{$me->{tmp_file}}){
# debug("deleting $fi->{filename} from $fi->{server}");
$me->{statistics}{cleanup_files} ++;
AC::MrGamoo::Job::Request->new( $me,
id => unique(),
server => $fi->{server},
info => "delete $fi->{filename} from $fi->{server}",
proto => {
type => 'mrgamoo_filedel',
msgidno => $^T,
want_reply => 1,
},
request => {
filename => $fi->{filename},
},
);
}
$me->{tmp_file} = [];
}
sub _cleanup_tasks {
my $me = shift;
# abort running tasks
my @t = values %{$me->{task_running}};
for my $t (@t){
$t->abort($me);
}
$me->{task_running} = {};
}
sub _cleanup_old_tmp_dirs {
my $base = conf_value('basedir') . '/mrtmp';
opendir(D, $base);
my @d = readdir(D);
closedir D;
for my $d (@d){
next if $d eq '.' || $d eq '..';
my $p = "$base/$d";
if( -f $p ){
# there should not be files here. remove.
unlink $p;
next;
}
my $mtime = (stat($p))[9];
next unless $^T - $mtime > 24 * 3600;
debug("removing old dir: $d");
rmtree( $p, undef, undef );
}
}
AC::DC::Sched->new(
info => 'clean up old dirs',
func => \&_cleanup_old_tmp_dirs,
freq => 3600,
);
1;
( run in 0.534 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )