our $VERSION = '5999.000_004';
use Gruntmaster::Daemon::Constants qw/ERR/;
-use Gruntmaster::Daemon::Format qw/prepare_files/;
+use Gruntmaster::Daemon::Format qw/prepare_files stopvms/;
use File::Basename qw/fileparse/;
use File::Temp qw/tempdir/;
##################################################
-sub purge;
-
my $db;
sub safe_can_nodie {
my ($type, $sub, $name) = @_;
- return unless $name =~ /^\w+$/;
- no strict 'refs';
+ return unless $name =~ /^\w+$/s;
my $pkg = __PACKAGE__ . "::${type}::${name}";
eval "require $pkg" or get_logger->warn("Error while requiring $pkg: $@");
$pkg->can($sub);
prepare_files $meta;
chomp $errors;
- my ($files, $generator, $runner, $judge, $testcnt) = map { $meta->{$_} or die "Required parameter missing: $_"} qw/files generator runner judge testcnt/;
+ my ($files, $generator, $runner, $judge, $testcnt) = map { $meta->{$_} or die "Required parameter missing: $_\n"} qw/files generator runner judge testcnt/;
$generator = safe_can Generator => generate => $generator;
$runner = safe_can Runner => run => $runner;
$meta->{$_} = $results{$_} for keys %results;
$meta->{results} = \@full_results
} catch {
- s,(.*) at .*,$1,;
+ s/(.*) at .*/$1/s;
chomp;
$meta->{result} = -1;
$meta->{result_text} = $_;
};
+ stopvms;
- get_logger->info("Job result: " . $meta->{result_text});
+ get_logger->info('Job result: ' . $meta->{result_text});
return unless $jobr;
$jobr->update({
result => $meta->{result},
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;
+ solved => $solved}) if !$jobr->problem->private;
}
sub got_job{
sub run{
require Gruntmaster::Data;
- $db = Gruntmaster::Data->connect('dbi:Pg:');
+ $db = Gruntmaster::Data->connect($ENV{GRUNTMASTER_DSN} // 'dbi:Pg:');
Log::Log4perl->init('/etc/gruntmasterd/gruntmasterd-log.conf');
get_logger->info("gruntmasterd $VERSION started");
chdir tempdir 'gruntmasterd.XXXX', CLEANUP => 1, TMPDIR => 1;