Skip to content

Shrink clusterd #301

Merged
merged 3 commits into from
Jan 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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