aboutsummaryrefslogtreecommitdiff
path: root/lib/App/Glacier/Command/Jobs.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/App/Glacier/Command/Jobs.pm')
-rw-r--r--lib/App/Glacier/Command/Jobs.pm39
1 files changed, 7 insertions, 32 deletions
diff --git a/lib/App/Glacier/Command/Jobs.pm b/lib/App/Glacier/Command/Jobs.pm
index 5a5f488..7dc5d06 100644
--- a/lib/App/Glacier/Command/Jobs.pm
+++ b/lib/App/Glacier/Command/Jobs.pm
@@ -116,42 +116,17 @@ sub list {
116 116
117 my $db = $self->jobdb(); 117 my $db = $self->jobdb();
118 $db->foreach(sub { 118 $db->foreach(sub {
119 my ($key, $descr) = @_; 119 my ($key, $descr, $vault) = @_;
120 my $vault = $descr->{VaultARN};
121 $vault =~ s{.*:vaults/}{};
122 120
123 return if (@vault_names && ! grep { $_ eq $vault } @vault_names); 121 return if (@vault_names && ! grep { $_ eq $vault } @vault_names);
124 122
125 unless ($self->{_options}{cached}) { 123 unless ($self->{_options}{cached}) {
126 if ($descr->{StatusCode} eq 'Failed') { 124 my $res = $self->check_job($key, $descr, $vault)
127 $self->debug(1, "deleting failed $key $vault " . 125 or return;
128 ($descr->{JobDescription} || $descr->{Action}) . 126 $res = timestamp_deserialize($res);
129 $descr->{JobId}); 127 $self->debug(2, $res->{StatusCode});
130 $db->delete($key) unless $self->dry_run; 128 $db->store($key, $res) unless $self->dry_run;
131 return; 129 $descr = $res;
132 }
133
134 my $res = $self->glacier->Describe_job($vault, $descr->{JobId});
135 if ($self->glacier->lasterr) {
136 if ($self->glacier->lasterr('code') == 404) {
137 $self->debug(1, "deleting expired $key $vault " .
138 ($descr->{JobDescription} || $descr->{Action}) .
139 $descr->{JobId});
140 App::Glacier::Job->fromdb($self, $vault, $key, $res)->delete()
141 unless $self->dry_run;
142 return;
143 } else {
144 $self->error("can't describe job $descr->{JobId}: ",
145 $self->glacier->last_error_message);
146 }
147 } elsif (ref($res) ne 'HASH') {
148 croak "describe_job returned wrong datatype (".ref($res).") for \"$descr->{JobId}\"";
149 } else {
150 $res = timestamp_deserialize($res);
151 $self->debug(2, $res->{StatusCode});
152 $db->store($key, $res) unless $self->dry_run;
153 $descr = $res;
154 }
155 } 130 }
156 131
157 my $started = $self->format_date_time($descr, 'CreationDate'); 132 my $started = $self->format_date_time($descr, 'CreationDate');

Return to:

Send suggestions and report system problems to the System administrator.