X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=scripts%2Ftask_server.pl;h=07cc53e89e8359ff890a3e08d61e6bfccf883683;hb=497da0ff32257cd249c8c60991f8aaebd92f409c;hp=1bcb719c9b4f36b85c3296dae790a96a0372824a;hpb=c6dd542b51ae9549ad42a54f9023b905412bbab9;p=kivitendo-erp.git diff --git a/scripts/task_server.pl b/scripts/task_server.pl index 1bcb719c9..07cc53e89 100755 --- a/scripts/task_server.pl +++ b/scripts/task_server.pl @@ -1,24 +1,15 @@ #!/usr/bin/perl - -use List::MoreUtils qw(any); - use strict; my $exe_dir; BEGIN { use FindBin; - use lib "$FindBin::Bin/.."; - - use SL::System::Process; - $exe_dir = SL::System::Process::exe_dir; - - unshift @INC, "${exe_dir}/modules/override"; # Use our own versions of various modules (e.g. YAML). - push @INC, "${exe_dir}/modules/fallback"; # Only use our own versions of modules if there's no system version. - unshift @INC, $exe_dir; - chdir($exe_dir) || die "Cannot change directory to ${exe_dir}\n"; + unshift(@INC, $FindBin::Bin . '/../modules/override'); # Use our own versions of various modules (e.g. YAML). + push (@INC, $FindBin::Bin . '/..'); # '.' will be removed from @INC soon. + push (@INC, $FindBin::Bin . '/../modules/fallback'); # Only use our own versions of modules if there's no system version. } use CGI qw( -no_xhtml); @@ -26,12 +17,13 @@ use Cwd; use Daemon::Generic; use Data::Dumper; use DateTime; -use Encode qw(); use English qw(-no_match_vars); use File::Spec; +use List::MoreUtils qw(any); use List::Util qw(first); use POSIX qw(setuid setgid); use SL::Auth; +use SL::DBUpgrade2; use SL::DB::AuthClient; use SL::DB::BackgroundJob; use SL::BackgroundJob::ALL; @@ -42,6 +34,7 @@ use SL::LXDebug; use SL::LxOfficeConf; use SL::Locale; use SL::Mailer; +use SL::System::Process; use SL::System::TaskServer; use Template; @@ -63,7 +56,6 @@ sub initialize_kivitendo { package main; - Form::disconnect_standard_dbh; $::lxdebug = LXDebug->new; $::locale = Locale->new($::lx_office_conf{system}->{language}); $::form = Form->new; @@ -93,8 +85,7 @@ sub initialize_kivitendo { } sub cleanup_kivitendo { - eval { SL::DB::Auth->new->db->dbh->rollback; }; - eval { SL::DB::BackgroundJob->new->db->dbh->rollback; }; + eval { SL::DB->client->dbh->rollback; }; $::auth->save_session; $::auth->expire_sessions; @@ -107,9 +98,10 @@ sub cleanup_kivitendo { } sub clean_before_sleeping { - Form::disconnect_standard_dbh; SL::DBConnect::Cache->disconnect_all_and_clear; SL::DB->db_cache->clear; + + File::Temp::cleanup(); } sub drop_privileges { @@ -165,6 +157,7 @@ sub notify_on_failure { EVAL_PERL => 0, ABSOLUTE => 1, CACHE_SIZE => 0, + ENCODING => 'utf8', }); return debug("Could not create Template instance") unless $template; @@ -181,7 +174,7 @@ sub notify_on_failure { subject => $cfg->{email_subject}, content_type => 'text/plain', charset => 'utf-8', - message => Encode::decode('utf-8', $body), + message => $body, )->send; 1; @@ -210,6 +203,18 @@ EOT exit 2; } + initialize_kivitendo(); + + my $dbupdater_auth = SL::DBUpgrade2->new(form => $::form, auth => 1)->parse_dbupdate_controls; + if ($dbupdater_auth->unapplied_upgrade_scripts($::auth->dbconnect)) { + print STDERR <run; + debug(" Executed job " . $job->package_name . + "; result: " . (!$history ? "no return value" : $history->has_failed ? "failed" : "succeeded") . + ($history && $history->has_failed ? "; error: " . $history->error_col : "")); + notify_on_failure(history => $history) if $history && $history->has_failed; } @@ -259,6 +268,8 @@ sub run_once_for_all_clients { sub gd_run { while (1) { + $SIG{'ALRM'} = 'IGNORE'; + run_once_for_all_clients(); debug("Sleeping"); @@ -267,7 +278,8 @@ sub gd_run { my $seconds = 60 - (localtime)[0]; if (!eval { - local $SIG{'ALRM'} = sub { + $SIG{'ALRM'} = sub { + $SIG{'ALRM'} = 'IGNORE'; debug("Got woken up by SIGALRM"); die "Alarm!\n" }; @@ -279,18 +291,8 @@ sub gd_run { } } -sub end_of_request { - $main::lxdebug->show_backtrace(); - die <exe_dir; +chdir($exe_dir) || die "Cannot change directory to ${exe_dir}\n"; mkdir SL::System::TaskServer::PID_BASE() if !-d SL::System::TaskServer::PID_BASE();