use strict;
use warnings;
-our $VERSION = '5999.000_003';
+our $VERSION = '5999.000_004';
use Gruntmaster::Daemon::Constants qw/ERR/;
use Gruntmaster::Daemon::Format qw/prepare_files/;
use Time::HiRes qw/time/;
use Try::Tiny;
use Log::Log4perl qw/get_logger/;
-use LWP::UserAgent;
use constant PAGE_SIZE => 10;
use constant FORMAT_EXTENSION => {
C => 'c',
CPP => 'cpp',
+ GCCGO => 'go',
+ GOLANG => 'go',
+ HASKELL => 'hs',
MONO => 'cs',
JAVA => 'java',
PASCAL => 'pas',
##################################################
my $db;
-my $ua = LWP::UserAgent->new;
-my @purge_hosts = exists $ENV{PURGE_HOSTS} ? split ' ', $ENV{PURGE_HOSTS} : ();
sub safe_can_nodie {
my ($type, $sub, $name) = @_;
safe_can_nodie @_ or get_logger->logdie("No such \l$type: '$name'");
}
-sub purge {
- get_logger->trace("Purging $_[0]");
- for my $host (@purge_hosts) {
- my $req = HTTP::Request->new(PURGE => "http://$host$_[0]");
- $ua->request($req)
- }
-}
-
sub process{
my ($job, $jobr) = @_;
$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;
+ my $solved = $meta->{result} ? 0 : 1;
+ my $status = $db->problem_statuses->find($jobr->owner, $jobr->problem);
+ $db->problem_statuses->update_or_create({
+ problem => $jobr->problem,
+ owner => $jobr->owner,
+ job => $jobr->id,
+ solved => $solved});
+
+ purge '/log/';
+ purge "/log/$job";
+ purge '/st/' . $jobr->contest if $jobr->contest;
+ purge '/us/';
+ purge '/us/' . $jobr->owner;
}
sub got_job{