Daemon: cleanup logging
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 31 Dec 2014 11:31:21 +0000 (12:31 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 31 Dec 2014 11:31:21 +0000 (12:31 +0100)
data/PVE/Daemon.pm

index d1cec0e..6bd9c29 100644 (file)
@@ -22,15 +22,6 @@ use Time::HiRes qw (gettimeofday);
 
 use base qw(PVE::CLIHandler);
 
-$SIG{'__WARN__'} = sub {
-    my $err = $@;
-    my $t = $_[0];
-    chomp $t;
-    print "$t\n";
-    syslog('warning', "WARNING: %s", $t);
-    $@ = $err;
-};
-
 $ENV{'PATH'} = '/sbin:/bin:/usr/sbin:/usr/bin';
 
 my $daemon_initialized = 0; # we only allow one instance
@@ -44,6 +35,13 @@ my $close_daemon_lock = sub {
     delete $self->{daemon_lock_fh};
 };
 
+my $log_err = sub {
+    my ($msg) = @_;
+    chomp $msg;
+    print STDERR "$msg\n";
+    syslog('err', "%s", $msg);
+};
+
 # call this if you fork() from child
 # Note: we already call this for workers, so it is only required
 # if you fork inside a simple daemon (max_workers == 0).
@@ -87,7 +85,14 @@ my $lockpidfile = sub {
 
     if (!flock ($self->{daemon_lock_fh}, LOCK_EX|LOCK_NB)) {
        &$close_daemon_lock($self);
-       die "can't aquire lock '$lkfn' - $!\n";
+       my $err = $!;
+
+       my ($running, $pid) = $self->running();
+       if ($running) {
+           die "can't aquire lock '$lkfn' - daemon already started (pid = $pid)\n";
+       } else {
+           die "can't aquire lock '$lkfn' - $err\n";
+       }
     }
 };
 
@@ -96,11 +101,8 @@ my $writepidfile = sub {
 
     my $pidfile = $self->{pidfile};
 
-    if (!open (PIDFH, ">$pidfile")) {
-       my $msg = "can't open pid file '$pidfile' - $!";
-       syslog ('err', $msg);
-       die "ERROR: $msg\n";
-    }
+    die "can't open pid file '$pidfile' - $!\n" if !open (PIDFH, ">$pidfile");
+
     print PIDFH "$$\n";
     close (PIDFH);
 };
@@ -229,10 +231,6 @@ my $server_run = sub {
 
     $ENV{PVE_DAEMON_LOCK_FD} = $self->{daemon_lock_fh}->fileno;
 
-#    my $fd = POSIX::dup($self->{daemon_lock_fh}) ||
-#      die "unable to duplicate daemon_lock_fh\n";
-
-
     # run in background
     my $spid;
 
@@ -249,25 +247,22 @@ my $server_run = sub {
        PVE::INotify::inotify_close();
        $spid = fork();
        if (!defined ($spid)) {
-           my $msg =  "can't put server into background - fork failed";
-           syslog('err', $msg);
-           die "ERROR: $msg\n";
+           die "can't put server into background - fork failed";
        } elsif ($spid) { # parent
            exit (0);
        }
        PVE::INotify::inotify_init();
     }
 
-    &$writepidfile($self);
-
-    POSIX::setsid(); 
-
     if ($self->{env_restart_pve_daemon}) {
        syslog('info' , "restarting server");
     } else {
+       &$writepidfile($self);
        syslog('info' , "starting server");
     }
 
+    POSIX::setsid(); 
+
     open STDERR, '>&STDOUT' || die "can't close STDERR\n";
 
     my $old_sig_term = $SIG{TERM};
@@ -479,7 +474,8 @@ sub start {
 
     eval  { &$server_run($self, $debug); };
     if (my $err = $@) {
-       syslog('err', "start failed - $err");
+       &$log_err("start failed - $err");
+       exit(-1);
     }
 }
 
@@ -542,7 +538,7 @@ sub stop {
            &$server_cleanup($self);
        };
        if (my $err = $@) {
-           syslog('err', "cleanup failed - $err");
+           &$log_err("cleanup failed - $err");
        }
     }
 }