- my %results = $judge->(@results);
- $meta->{$_} = $results{$_} for keys %results;
- } catch {
- s,(.*) at .*,$1,;
- chomp;
- $meta->{result} = -1;
- $meta->{result_text} = $_;
- };
-
- # Clean up
- get_logger->info("Job result: " . $meta->{result_text});
- delete $meta->{files}{$_}{run} for keys $meta->{files};
- $meta->{date} = time;
- $meta->{results} = \@full_results if scalar @full_results;
- DumpFile "meta.yml", $meta;
- for (<*>) {
- unlink $_ unless $_ eq 'in' || $_ eq 'meta.yml';
- }
- chdir '../..';
- mkdir 'log' unless -d 'log';
- IO::File->new('>log/meta.yml')->close unless -f 'log/meta.yml';
- flock my $logmetafh = IO::File->new('<log/meta.yml'), LOCK_EX;
- my $logmeta = LoadFile 'log/meta.yml';
- $logmeta->{last}++;
- rename $dir, 'log/' . $logmeta->{last};
- generate 'log/' . $logmeta->{last} . '/index.htm';
- DumpFile 'log/meta.yml', $logmeta;
- undef $logmetafh;
- generate 'log/index.html'
+ 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},
+ ($meta->{results} ? (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;
+}
+
+sub got_job{
+ my $job = $_[0];
+ my $id = $job->id;
+ get_logger->debug("Taking job $id...");
+ my $daemon = hostname . ":$$";
+ $job->update({daemon => $daemon});
+ #if (set_job_daemon $job, hostname . ":$$") {
+ if (1) {
+ get_logger->debug("Succesfully taken job $id");
+ process $id, $job;
+ get_logger->debug("Job $id done");
+ } else {
+ get_logger->debug("Job $id already taken");
+ }