diff --git a/src/lib/Hydra/Helper/AddBuilds.pm b/src/lib/Hydra/Helper/AddBuilds.pm
index 220f2bd6..62232068 100644
--- a/src/lib/Hydra/Helper/AddBuilds.pm
+++ b/src/lib/Hydra/Helper/AddBuilds.pm
@@ -88,10 +88,7 @@ sub fetchInputBuild {
{ order_by => "me.id DESC", rows => 1
, where => \ attrsToSQL($attrs, "me.id") });
- if (!defined $prevBuild || !isValidPath(getMainOutput($prevBuild)->path)) {
- print STDERR "input `", $name, "': no previous build available\n";
- return ();
- }
+ return () if !defined $prevBuild || !isValidPath(getMainOutput($prevBuild)->path);
#print STDERR "input `", $name, "': using build ", $prevBuild->id, "\n";
diff --git a/src/lib/Hydra/Schema/Jobsets.pm b/src/lib/Hydra/Schema/Jobsets.pm
index 49e57b85..f31a75f7 100644
--- a/src/lib/Hydra/Schema/Jobsets.pm
+++ b/src/lib/Hydra/Schema/Jobsets.pm
@@ -124,6 +124,11 @@ __PACKAGE__->table("Jobsets");
default_value: 100
is_nullable: 0
+=head2 fetcherrormsg
+
+ data_type: 'text'
+ is_nullable: 1
+
=cut
__PACKAGE__->add_columns(
@@ -159,6 +164,8 @@ __PACKAGE__->add_columns(
{ data_type => "integer", default_value => 300, is_nullable => 0 },
"schedulingshares",
{ data_type => "integer", default_value => 100, is_nullable => 0 },
+ "fetcherrormsg",
+ { data_type => "text", is_nullable => 1 },
);
=head1 PRIMARY KEY
@@ -280,7 +287,7 @@ __PACKAGE__->belongs_to(
);
-# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-09-20 12:15:23
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:pD6tGW0Ob3fuA1p0uQnBWw
+# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-09-25 14:10:28
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:cAZ4+c7OhqGW8ATru8Foiw
1;
diff --git a/src/root/jobset.tt b/src/root/jobset.tt
index d3645b24..72f939e6 100644
--- a/src/root/jobset.tt
+++ b/src/root/jobset.tt
@@ -43,7 +43,7 @@
- Evaluations
- [% IF jobset.errormsg %]
+ [% IF jobset.errormsg || jobset.fetcherrormsg %]
- Evaluation errors
[% END %]
- Jobs
@@ -59,7 +59,7 @@
Last checked: |
[% IF jobset.lastcheckedtime %]
- [% INCLUDE renderDateTime timestamp = jobset.lastcheckedtime %], [% IF jobset.errormsg %]with errors![% ELSE %]no errors[% END %]
+ [% INCLUDE renderDateTime timestamp = jobset.lastcheckedtime %], [% IF jobset.errormsg || jobset.fetcherrormsg %]with errors![% ELSE %]no errors[% END %]
[% ELSE %]
never
[% END %]
@@ -91,10 +91,10 @@
- [% IF jobset.errormsg %]
+ [% IF jobset.errormsg || jobset.fetcherrormsg %]
Errors occurred at [% INCLUDE renderDateTime timestamp=jobset.errortime %].
- [% HTML.escape(jobset.errormsg) %]
+ [% HTML.escape(jobset.fetcherrormsg || jobset.errormsg) %]
[% END %]
diff --git a/src/script/hydra-evaluator b/src/script/hydra-evaluator
index 3a089e58..73f0ed9e 100755
--- a/src/script/hydra-evaluator
+++ b/src/script/hydra-evaluator
@@ -46,7 +46,7 @@ sub setJobsetError {
eval {
txn_do($db, sub {
- $jobset->update({errormsg => $errorMsg, errortime => time});
+ $jobset->update({ errormsg => $errorMsg, errortime => time, fetcherrormsg => undef });
});
};
if ($errorMsg ne $prevError) {
@@ -115,7 +115,17 @@ sub checkJobsetWrapped {
# Fetch all values for all inputs.
my $checkoutStart = time;
- fetchInputs($project, $jobset, $inputInfo);
+ eval {
+ fetchInputs($project, $jobset, $inputInfo);
+ };
+ if ($@) {
+ my $msg = $@;
+ print STDERR $msg;
+ txn_do($db, sub {
+ $jobset->update({ lastcheckedtime => time, fetcherrormsg => $msg });
+ });
+ return;
+ }
my $checkoutStop = time;
# Hash the arguments to hydra-eval-jobs and check the
@@ -127,7 +137,7 @@ sub checkJobsetWrapped {
if (defined $prevEval && $prevEval->hash eq $argsHash) {
print STDERR " jobset is unchanged, skipping\n";
txn_do($db, sub {
- $jobset->update({lastcheckedtime => time});
+ $jobset->update({ lastcheckedtime => time, fetcherrormsg => undef });
});
return;
}
@@ -253,7 +263,7 @@ sub checkJobsetWrapped {
}
$msg .=
($error->{location} ne "" ? "in job ‘$error->{location}’" : "at top-level") .
- " [$bindings]:\n" . $error->{msg} . "\n\n";
+ ":\n" . $error->{msg} . "\n\n";
}
setJobsetError($jobset, $msg);
}
@@ -275,7 +285,7 @@ sub checkJobset {
if ($@) {
my $msg = $@;
- print STDERR "error evaluating jobset ", $jobset->name, ": $msg";
+ print STDERR $msg;
txn_do($db, sub {
$jobset->update({lastcheckedtime => time});
setJobsetError($jobset, $msg);
diff --git a/src/sql/hydra.sql b/src/sql/hydra.sql
index 388fd7c9..a1fe253d 100644
--- a/src/sql/hydra.sql
+++ b/src/sql/hydra.sql
@@ -62,6 +62,7 @@ create table Jobsets (
keepnr integer not null default 3,
checkInterval integer not null default 300, -- minimum time in seconds between polls (0 = disable polling)
schedulingShares integer not null default 100,
+ fetchErrorMsg text,
primary key (project, name),
foreign key (project) references Projects(name) on delete cascade on update cascade
#ifdef SQLITE
diff --git a/src/sql/upgrade-22.sql b/src/sql/upgrade-22.sql
new file mode 100644
index 00000000..c2a182c4
--- /dev/null
+++ b/src/sql/upgrade-22.sql
@@ -0,0 +1 @@
+alter table Jobsets add column fetchErrorMsg text;
|