Skip to content

Commit

Permalink
Merge pull request #301 from mariux64/shrink-clusterd
Browse files Browse the repository at this point in the history
Shrink clusterd
  • Loading branch information
donald authored Jan 20, 2023
2 parents fa1add5 + 985ffdc commit e78fb60
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 60 deletions.
63 changes: 6 additions & 57 deletions clusterd/clusterd
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,7 @@ sub delete_host {
#-----------------------------------------------------------------------

package My::NetlogReceiver;
use Sys::Syslog;

our $listen_socket;
our $TCP_MAX=1024;
Expand All @@ -668,7 +669,7 @@ sub day {
sub bigben {
my $day=day();
$day le $DAY_LAST_MSG and return;
warn "NETLOG ==================================================== morning has broken ====\n";
syslog('warning', "NETLOG ==================================================== morning has broken ====\n");
$DAY_LAST_MSG=$day;
}

Expand Down Expand Up @@ -702,8 +703,7 @@ sub receive {
last if length($$bufref)<2+$l;
my $msg=substr($$bufref,2,$l);
$$bufref=substr($$bufref,2+$l);
$|=1;
warn "NETLOG $msg\n" unless $msg=~/NETLOG/;
syslog('warning', "NETLOG $msg\n") unless $msg=~/NETLOG/;
}
My::Select::reader_requeue();
}
Expand Down Expand Up @@ -769,7 +769,6 @@ chomp($my_unixrev);

our $CLUSTER_PW;
our $CLUSTER_PW_FILE='/etc/clusterd.password';
our $OLD_CLUSTER_PW_FILE='/root/clusterd.password';
our $CLUSTER_PW_TIMESTAMP=0;

$ENV{'PATH'} = '/usr/local/bin:/sbin:/usr/sbin:/bin'.($ENV{PATH}?':'.$ENV{PATH}:''); # for ps , tar (gnu!)
Expand Down Expand Up @@ -1612,24 +1611,6 @@ sub send_tcp_cp {
sub sync_cluster_pw {
my $st=Donald::FileInfo->lstat($CLUSTER_PW_FILE);

# upgrade : move cluster password file from /root to /etc

if (!$st && -e $OLD_CLUSTER_PW_FILE) {
warn "upgrading cluster password file location $OLD_CLUSTER_PW_FILE -> $CLUSTER_PW_FILE\n";
my $in=new IO::File $OLD_CLUSTER_PW_FILE,'<';
unless (defined $in) {warn "$OLD_CLUSTER_PW_FILE: $!\n";return undef;}
my $out=new IO::File $CLUSTER_PW_FILE,O_WRONLY|O_CREAT,0600;
unless (defined $out) {warn "$CLUSTER_PW_FILE: $!\n";return undef;}
my $data;
$in->read($data,1024);
$out->write($data);
$in->close;
$out->close;
$st=Donald::FileInfo->lstat($CLUSTER_PW_FILE);
defined $st or die "$CLUSTER_PW_FILE: $!\n";
unlink $OLD_CLUSTER_PW_FILE;
}

if ($st) {
if (!defined $CLUSTER_PW or $CLUSTER_PW_TIMESTAMP != $st->mtime) {
my $fh=new IO::File $CLUSTER_PW_FILE,'<';
Expand Down Expand Up @@ -1702,16 +1683,7 @@ our $PROG_MTIME;
sub check_progfile_status {
defined $PROG_FILE or $PROG_FILE=$0;
my @f=lstat $PROG_FILE or return;
if (defined $PROG_MTIME) {
if ($f[9] != $PROG_MTIME) {
warn "progfile $PROG_FILE has changed - upgrade restart from version ".version_info()."\n";
exec $PROG_FILE,'--daemon',($options{'foreground'}?'--foreground':()),($options{'syslog'}?'--syslog':());
}
}
else {
$PROG_MTIME=$f[9];
}
My::Select::timeout(60,\&check_progfile_status);
$PROG_MTIME=$f[9];
}

sub version_info { # '20090617-155314'
Expand Down Expand Up @@ -2047,12 +2019,7 @@ usage: $0 [options]
--lsof=pattern
--kill # try to kill a running server
--daemon # start a daemon
--kill # try to kill previous server first
--foreground # stay in foreground, log to stderr
--syslog # log to syslog instead of stderr
push files.... # push files over tcp
Expand All @@ -2061,12 +2028,9 @@ __EOF__
use Getopt::Long;
GetOptions
(
'kill' => \$options{'kill'},
'daemon' => \$options{'daemon'},
'push=s' => \$options{'push'},
'exec=s' => \$options{'exec'},
'foreground' => \$options{'foreground'},
'syslog' => \$options{'syslog'},
'push-amd-tar' => \$options{'push_amd_tar'},
'send-restart' => \$options{'send-restart'},
'flush-gidcache' => \$options{'flush-gidcache'},
Expand Down Expand Up @@ -2111,28 +2075,13 @@ if (defined $options{'push'}) {
$donald_s=new My::Select::INET(Proto=>'udp') or die "$!\n";
udp_broadcast_message($donald_s,'reexport');
} elsif (defined $options{'daemon'}) {
$options{'kill'} and Donald::Tools::kill_previous_server('clusterd') and sleep 2;

$SIG{PIPE}='IGNORE';

$donald_s=new My::Select::INET(Proto=>'udp',Broadcast=>1,LocalPort=>$UDP_PORT) or die "$!\n";
$donald_s->receive_data(\&udp_message,$donald_s);

unless ($options{'foreground'}) {
my $pid=fork;
defined $pid or die "$!\n";
$pid and exit 0;
}

if ($options{'syslog'} or not $options{'foreground'}) {
openlog('clusterd','pid','daemon');
Sys::Syslog::setlogsock('unix'); # with 'native' we get EOLs in the logfile, option "noeol" doesn't work
$SIG{__WARN__} = sub { syslog('warning',@_); };
$SIG{__DIE__} = sub { syslog('crit',@_);syslog('crit','exiting');exit 1;};
open (STDOUT,'>','/dev/null');
open (STDERR,'>','/dev/null');
open (STDIN,'<','/dev/null');
}
openlog('clusterd','pid','daemon');
Sys::Syslog::setlogsock('unix'); # with 'native' we get EOLs in the logfile, option "noeol" doesn't work

check_progfile_status();
warn "server started - ".version_info()."\n";
Expand Down
4 changes: 1 addition & 3 deletions clusterd/clusterd.service
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
[Unit]
Description=ClusterDonald
Requires=network.target
After=network.target

[Service]
ExecStart=/usr/sbin/clusterd --daemon --foreground --kill --syslog
StandardOutput=syslog
ExecStart=/usr/sbin/clusterd --daemon
Restart=always
RestartSec=10s

Expand Down

0 comments on commit e78fb60

Please sign in to comment.