change mrtg times collect again
[spider.git] / perl / cluster.pl
index fc530e21c1db11b12f554ab43514f33a8e1f01fa..1419e318e15d5e704045c1fd764201cf8faf0e7c 100755 (executable)
@@ -10,6 +10,8 @@
 #
 #
 
+package main;
+
 require 5.10.1;
 use warnings;
 
@@ -29,18 +31,22 @@ BEGIN {
        die "$root/local doesn't exist, please RTFM" unless -d "$root/local";
        die "$root/local/DXVars.pm doesn't exist, please RTFM" unless -e "$root/local/DXVars.pm";
 
-       mkdir "$root/local_cmd", 0777 unless -d "$root/local_cmd";
-
+       # create some directories
+       mkdir "$root/local_cmd", 02777 unless -d "$root/local_cmd";
+       mkdir "$root/local_data", 02777 unless -d "$root/local_data";
 
        # try to create and lock a lockfile (this isn't atomic but
        # should do for now
-       $lockfn = "$root/local/cluster.lck";       # lock file name
+       $lockfn = "$root/local_data/cluster.lck";       # lock file name
        if (-w $lockfn) {
                open(CLLOCK, "$lockfn") or die "Can't open Lockfile ($lockfn) $!";
                my $pid = <CLLOCK>;
                if ($pid) {
                        chomp $pid;
-                       die "Lockfile ($lockfn) and process $pid exist, another cluster running?" if kill 0, $pid;
+                       if (kill 0, $pid) {
+                               warn "Lockfile ($lockfn) and process $pid exist, another cluster running?\n";
+                               exit 1;
+                       }
                }
                unlink $lockfn;
                close CLLOCK;
@@ -53,9 +59,12 @@ BEGIN {
        $systime = time;
 }
 
+                       
 use Mojo::IOLoop;
 
 use DXVars;
+use SysVar;
+
 use Msg;
 use IntMsg;
 use Internet;
@@ -126,7 +135,7 @@ use vars qw(@inqueue $systime $starttime $lockfn @outstanding_connects
                        $clusterport $mycall $decease $is_win $routeroot $me $reqreg $bumpexisting
                        $allowdxby $dbh $dsn $dbuser $dbpass $do_xml $systime_days $systime_daystart
                        $can_encode $maxconnect_user $maxconnect_node $idle_interval $log_flush_interval
-                       $broadcast_debug
+                       $broadcast_debug 
                   );
 
 @inqueue = ();                                 # the main input queue, an array of hashes
@@ -146,7 +155,8 @@ $log_flush_interval = 2;            # interval to wait between log flushes
 
 our $ending;                                   # signal that we are ending;
 our $broadcast_debug;                  # allow broadcasting of debug info down "enhanced" user connections
-
+our $clssecs;                                  # the amount of cpu time the DXSpider process have consumed
+our $cldsecs;                                  # the amount of cpu time any child processes have consumed
 
 
 # send a message to call on conn and disconnect
@@ -439,6 +449,7 @@ sub setup_start
        }
        STDOUT->autoflush(1);
 
+       
        # try to load the database
        if (DXSql::init($dsn)) {
                $dbh = DXSql->new($dsn);
@@ -495,7 +506,7 @@ sub setup_start
 
        # initialise User file system
        dbg("loading user file system ...");
-       DXUser->init($userfn, 1);
+       DXUser::init(1);
 
        # look for the sysop and the alias user and complain if they aren't there
        {
@@ -642,6 +653,7 @@ setup_start();
 
 my $main_loop = Mojo::IOLoop->recurring($idle_interval => \&idle_loop);
 my $log_flush_loop = Mojo::IOLoop->recurring($log_flush_interval => \&DXLog::flushall);
+my $cpusecs_loop = Mojo::IOLoop->recurring(5 => sub {my @t = times; $clssecs = $t[0]+$t[1]; $cldsecs = $t[2]+$t[3]});
 
 Web::start_node();