Task-Server: vor Schlafen aufräumen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 3 Jun 2015 09:15:56 +0000 (11:15 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 3 Jun 2015 14:53:00 +0000 (16:53 +0200)
Dabei werden unter Anderem potenziell noch laufende Transaktionen
beendet und zumindest das Standard-DBH (nicht das von Rose)
geschlossen. Dadurch sollten alle Locks, die durch die Jobs
evtl. entstanden sind, wieder aufgelöst worden sein.

scripts/task_server.pl

index d515e33..661c19a 100755 (executable)
@@ -82,6 +82,20 @@ sub initialize_kivitendo {
   $::form->{__ERROR_HANDLER} = sub { die @_ };
 }
 
+sub cleanup_kivitendo {
+  eval { SL::DB::Auth->new->db->dbh->rollback; };
+  eval { SL::DB::BackgroundJob->new->db->dbh->rollback; };
+
+  $::auth->save_session;
+  $::auth->expire_sessions;
+  $::auth->reset;
+
+  $::form     = undef;
+  $::myconfig = ();
+  $::request  = undef;
+  Form::disconnect_standard_dbh;
+}
+
 sub drop_privileges {
   my $user = $lx_office_conf{task_server}->{run_as};
   return unless $user;
@@ -199,6 +213,8 @@ sub gd_run {
       notify_on_failure(exception => $error);
     }
 
+    cleanup_kivitendo();
+
     debug("Sleeping");
 
     my $seconds = 60 - (localtime)[0];