- my %results = $judge->(@results);
- $meta->{$_} = $results{$_} for keys %results;
- } catch {
- s,(.*) at .*,$1,;
- chomp;
- $meta->{result} = -1;
- $meta->{result_text} = $_;
- };
-
- get_logger->info("Job result: " . $meta->{result_text});
- set_job_result $job, $meta->{result};
- set_job_result_text $job, $meta->{result_text};
- set_job_results $job, \@full_results if scalar @full_results;
- set_job_errors $job, $errors;
-
- my $log = $Gruntmaster::Data::contest ? "ct/$Gruntmaster::Data::contest/log" : 'log';
-
- PUBLISH gensrc => ($Gruntmaster::Data::contest // '') . ".$job";
- PUBLISH genpage => "$log/job/$job.html";
- PUBLISH genpage => "$log/index.html";
- PUBLISH genpage => "$log/st.html";
- my $page = ($job + PAGE_SIZE - 1) / PAGE_SIZE;
- PUBLISH genpage => "$log/@{[$page - 1]}.html";
- PUBLISH genpage => "$log/$page.html";
- PUBLISH genpage => "$log/@{[$page + 1]}.html";
-
- purge "/$log/job/$job";
- purge "/$log/";
- purge "/$log/st";
- purge "/$log/$_" for $page - 1, $page, $page + 1;
+ my %results = $judge->(@results);
+ $meta->{$_} = $results{$_} for keys %results;
+ $meta->{results} = \@full_results
+ } catch {
+ s,(.*) at .*,$1,;
+ chomp;
+ $meta->{result} = -1;
+ $meta->{result_text} = $_;
+ };
+
+ get_logger->info("Job result: " . $meta->{result_text});
+ return unless $jobr;
+ $jobr->update({
+ result => $meta->{result},
+ result_text => $meta->{result_text},
+ results => encode_json $meta->{results},
+ $errors ? (errors => $errors) : ()
+ });
+
+ my $log = $jobr->contest ? 'ct/' . $jobr->contest->id . '/log' : 'log';
+ my $page = int (($job + PAGE_SIZE - 1) / PAGE_SIZE);
+
+ purge "/$log/$job";
+ purge "/$log/";
+ purge "/$log/st";
+ purge "/$log/page/$_" for $page - 1, $page, $page + 1;