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 )