Skip to content
Extraits de code Groupes Projets
Valider 81a2cab7 rédigé par Alexandre Morignot's avatar Alexandre Morignot
Parcourir les fichiers

downloader try to rm file if something fails

parent b1cde2ee
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -19,6 +19,7 @@ POE::Session->create(
signal_filename => \&sessions::downloader::ddl::signal_filename,
signal_ddl => \&sessions::downloader::ddl::signal_ddl,
signal_move => \&sessions::downloader::ddl::signal_move,
signal_rm => \&sessions::downloader::ddl::signal_rm,
end_task => \&sessions::downloader::ddl::end_task,
},
);
......
......@@ -83,7 +83,7 @@ sub signal_filename {
$log->error("error getting filename for $id : $status");
$heap->{ddl}->{pb}->{$id}->{child} = undef;
$kernel->yield("end_task");
$kernel->yield("end_task", $id);
return;
}
......@@ -120,7 +120,7 @@ sub signal_ddl {
if ($status ne "0") {
$log->error("error downloading $id : $status");
$kernel->yield("end_task");
rm($kernel, $heap, $id, "/tmp/".$heap->{ddl}->{pb}->{$id}->{filename}.".part");
return;
}
......@@ -155,23 +155,70 @@ sub signal_move {
if ($status ne "0") {
$log->error("error moving $id from tmp : $status");
# rm file
rm($kernel, $heap, $id, "/tmp/".$heap->{ddl}->{pb}->{$id}->{filename});
return;
}
else {
# we update db
eval {
utils::db::set_filename($id, $heap->{ddl}->{pb}->{$id}->{filename});
$kernel->yield("end_task", $id);
};
$log->error($@) if ($@);
if ($a) {
$log->error($@);
rm(
$kernel,
$heap,
$id,
$conf->{save_folder}."/".$heap->{ddl}->{pb}->{$id}->{filename},
);
}
}
delete $heap->{ddl}->{pb}->{$id};
$kernel->yield("end_task");
sub rm {
my ($kernel, $heap, $id, $filename) = @_;
my $child = POE::Wheel::Run->new(
Program => [
"rm",
$filename
],
StdoutEvent => "devnull",
StderrEvent => "devnull",
);
$kernel->sig_child($child->PID, "signal_rm");
# we link playbot id to PID and url
$heap->{ddl}->{pb}->{$id}->{child} = $child->PID;
# we link wheel id to playbot id
$heap->{ddl}->{wid}->{$child->ID} = $id;
# we link PID to child object
$heap->{ddl}->{pid}->{$child->PID} = $child;
}
sub signal_rm {
$log->debug("DDL");
my ($kernel, $heap, $pid, $status) = @_[KERNEL, HEAP, ARG1, ARG2];
my $child = delete $heap->{ddl}->{pid}->{$pid};
my $id = delete $heap->{ddl}->{wid}->{$child->ID};
$heap->{ddl}->{pb}->{$id}->{child} = undef;
if ($status ne "0") {
$log->critical("cannot remove file");
}
$kernel->yield("end_task", $id);
}
sub end_task {
my ($kernel, $heap) = @_[KERNEL, HEAP];
my ($kernel, $heap, $id) = @_[KERNEL, HEAP, ARG0];
$heap->{ddl}->{running} = 0;
delete $heap->{ddl}->{pb}->{$id};
if (@{ $heap->{ddl}->{tasks} }) {
my $task = shift $heap->{ddl}->{tasks};
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter