Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / SL / System / TaskServer.pm
index f5b4122..a37cd03 100644 (file)
@@ -10,7 +10,8 @@ use Rose::Object::MakeMethods::Generic (
 
 use File::Slurp;
 use File::Spec::Functions qw(:ALL);
-use File::Temp qw(tempfile);
+use File::Temp;
+use Sys::Hostname ();
 
 use SL::System::Process;
 
@@ -22,6 +23,8 @@ use constant {
 
 use constant PID_BASE => "users/pid";
 
+my $node_id;
+
 sub status {
   my ($self) = @_;
 
@@ -63,6 +66,14 @@ sub wake_up {
   return kill('ALRM', $pid) ? 1 : undef;
 }
 
+sub node_id {
+  return $node_id if $node_id;
+
+  $node_id = ($::lx_office_conf{task_server} // {})->{node_id} || Sys::Hostname::hostname();
+
+  return $node_id;
+}
+
 #
 # private methods
 #
@@ -82,12 +93,13 @@ sub _read_pid {
 sub _run_script_command {
   my ($self, $command) = @_;
 
-  my ($fh, $file_name) = tempfile();
   my $exe              = catfile(catdir(SL::System::Process->exe_dir, 'scripts'), 'task_server.pl');
+  my $temp_file        = File::Temp->new;
+  my $file_name        = $temp_file->filename;
 
-  system "${exe} ${command} >> ${file_name} 2>&1";
+  $temp_file->close;
 
-  $fh->close;
+  system "${exe} ${command} >> ${file_name} 2>&1";
 
   $self->last_command_output(read_file($file_name));