projects
/
kivitendo-erp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Testfall: Erzeugnis fertigen aufm Mond, aber Einzelteile im Lager Erde
[kivitendo-erp.git]
/
SL
/
System
/
TaskServer.pm
diff --git
a/SL/System/TaskServer.pm
b/SL/System/TaskServer.pm
index
df67523
..
a37cd03
100644
(file)
--- a/
SL/System/TaskServer.pm
+++ b/
SL/System/TaskServer.pm
@@
-10,7
+10,8
@@
use Rose::Object::MakeMethods::Generic (
use File::Slurp;
use File::Spec::Functions qw(:ALL);
use File::Slurp;
use File::Spec::Functions qw(:ALL);
-use File::Temp qw(tempfile);
+use File::Temp;
+use Sys::Hostname ();
use SL::System::Process;
use SL::System::Process;
@@
-20,6
+21,10
@@
use constant {
ERR_PROCESS => -2,
};
ERR_PROCESS => -2,
};
+use constant PID_BASE => "users/pid";
+
+my $node_id;
+
sub status {
my ($self) = @_;
sub status {
my ($self) = @_;
@@
-41,6
+46,12
@@
sub start {
return $self->_run_script_command('start');
}
return $self->_run_script_command('start');
}
+sub start_if_not_running {
+ my ($self) = @_;
+
+ $self->start unless $self->is_running;
+}
+
sub stop {
my ($self) = @_;
sub stop {
my ($self) = @_;
@@
-55,6
+66,14
@@
sub wake_up {
return kill('ALRM', $pid) ? 1 : undef;
}
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
#
#
# private methods
#
@@
-65,8
+84,7
@@
sub _read_pid {
my $exe_dir = SL::System::Process->exe_dir;
foreach my $conf (qw(kivitendo.conf lx_office.conf kivitendo.conf.default)) {
my $exe_dir = SL::System::Process->exe_dir;
foreach my $conf (qw(kivitendo.conf lx_office.conf kivitendo.conf.default)) {
- my $pid_file_name = join '.', splitdir($exe_dir), "config.${conf}.pid";
- my $pid_file_path = catfile(catdir($exe_dir, 'users', 'pid'), $pid_file_name);
+ my $pid_file_path = catfile(catdir($exe_dir, splitdir(PID_BASE())), "config.${conf}.pid");
return join('', read_file($pid_file_path)) * 1 if -f $pid_file_path;
}
return join('', read_file($pid_file_path)) * 1 if -f $pid_file_path;
}
@@
-75,12
+93,13
@@
sub _read_pid {
sub _run_script_command {
my ($self, $command) = @_;
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 $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));
$self->last_command_output(read_file($file_name));