for debugging
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Tue, 27 Oct 2009 02:18:52 +0000 (13:18 +1100)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Tue, 27 Oct 2009 02:18:52 +0000 (13:18 +1100)
add a global variable holding the pid of the main daemon.
change the tracking of time() in the event loop to only check/warn when called from the main daemon

client/ctdb_client.c
include/ctdb_private.h
lib/events/events_epoll.c
lib/events/events_select.c
lib/events/events_standard.c
server/ctdb_daemon.c
tools/ctdb.c

index e8c543f1498be6d951c62d007f4b7c4084be0647..d4130cdf58f2b5ce5cf088e6777002e476cd4c13 100644 (file)
@@ -30,6 +30,8 @@
 #include "../include/ctdb_private.h"
 #include "lib/util/dlinklist.h"
 
+pid_t ctdbd_pid;
+
 /*
   allocate a packet for use in client<->daemon communication
  */
index ad84628a99dfc9814a19e7cad428b57670d95477..e73913a2bf36549bc6f278258491f7c90dac24c4 100644 (file)
@@ -53,6 +53,11 @@ struct takeover_run_reply {
        uint64_t srvid;
 };
 
+/*
+ * pid of the ctdbd daemon
+ */
+extern pid_t ctdbd_pid;
+
 /*
   a tcp connection description
  */
index b7172a7b9a483f4a369f6315d521e8a0397ba856..0dfdb79517a6955dbd7d79710aa59239f1664ff2 100644 (file)
@@ -29,6 +29,8 @@
 #include "lib/events/events_internal.h"
 #include <sys/epoll.h>
 
+extern pid_t ctdbd_pid;
+
 struct epoll_event_context {
        /* a pointer back to the generic event_context */
        struct event_context *ev;
@@ -466,17 +468,19 @@ static int epoll_event_loop_wait(struct event_context *ev)
                if (epoll_event_loop_once(ev) != 0) {
                        break;
                }
-               new_t=time(NULL);
-               if (t != 0) {
-                       if (t > new_t) {
-                               DEBUG(0,("ERROR Time skipped backward by %d seconds\n", (int)(t-new_t)));
-                       }
-                       /* We assume here that we get at least one event every 5 seconds */
-                       if (new_t > (t+5)) {
-                               DEBUG(0,("ERROR Time jumped forward by %d seconds\n", (int)(new_t-t)));
+               if (getpid() == ctdbd_pid) {
+                       new_t=time(NULL);
+                       if (t != 0) {
+                               if (t > new_t) {
+                                       DEBUG(0,("ERROR Time skipped backward by %d seconds\n", (int)(t-new_t)));
+                               }
+                               /* We assume here that we get at least one event every 5 seconds */
+                               if (new_t > (t+5)) {
+                                       DEBUG(0,("ERROR Time jumped forward by %d seconds\n", (int)(new_t-t)));
+                               }
                        }
+                       t=new_t;
                }
-               t=new_t;
        }
 
        return 0;
index c908b1227d2ce655d40d372ba2e28e988693d574..404cd8c370adb6903789d60ddc4c94645f6fa219 100644 (file)
@@ -31,6 +31,8 @@
 #include "lib/events/events.h"
 #include "lib/events/events_internal.h"
 
+extern pid_t ctdbd_pid;
+
 struct select_event_context {
        /* a pointer back to the generic event_context */
        struct event_context *ev;
@@ -281,17 +283,19 @@ static int select_event_loop_wait(struct event_context *ev)
                if (select_event_loop_once(ev) != 0) {
                        break;
                }
-               new_t=time(NULL);
-               if (t != 0) {
-                       if (t > new_t) {
-                               DEBUG(0,("ERROR Time skipped backward by %d seconds\n", (int)(t-new_t)));
-                       }
-                       /* We assume here that we get at least one event every 5 seconds */
-                       if (new_t > (t+5)) {
-                               DEBUG(0,("ERROR Time jumped forward by %d seconds\n", (int)(new_t-t)));
+               if (getpid() == ctdbd_pid) {
+                       new_t=time(NULL);
+                       if (t != 0) {
+                               if (t > new_t) {
+                                       DEBUG(0,("ERROR Time skipped backward by %d seconds\n", (int)(t-new_t)));
+                               }
+                               /* We assume here that we get at least one event every 5 seconds */
+                               if (new_t > (t+5)) {
+                                       DEBUG(0,("ERROR Time jumped forward by %d seconds\n", (int)(new_t-t)));
+                               }
                        }
+                       t=new_t;
                }
-               t=new_t;
        }
 
        return select_ev->exit_code;
index 35516ea14c0379ff19715d493acaf82711c4a4c9..9ee2328225d2d4aea7e7e5005cb8857c119aa572 100644 (file)
@@ -36,6 +36,8 @@
 #include "lib/events/events.h"
 #include "lib/events/events_internal.h"
 
+extern pid_t ctdbd_pid;
+
 struct std_event_context {
        /* a pointer back to the generic event_context */
        struct event_context *ev;
@@ -582,17 +584,19 @@ static int std_event_loop_wait(struct event_context *ev)
                if (std_event_loop_once(ev) != 0) {
                        break;
                }
-               new_t=time(NULL);
-               if (t != 0) {
-                       if (t > new_t) {
-                               DEBUG(0,("ERROR Time skipped backward by %d seconds\n", (int)(t-new_t)));
-                       }
-                       /* We assume here that we get at least one event every 5 seconds */
-                       if (new_t > (t+5)) {
-                               DEBUG(0,("ERROR Time jumped forward by %d seconds\n", (int)(new_t-t)));
+               if (getpid() == ctdbd_pid) {
+                       new_t=time(NULL);
+                       if (t != 0) {
+                               if (t > new_t) {
+                                       DEBUG(0,("ERROR Time skipped backward by %d seconds\n", (int)(t-new_t)));
+                               }
+                               /* We assume here that we get at least one event every 5 seconds */
+                               if (new_t > (t+5)) {
+                                       DEBUG(0,("ERROR Time jumped forward by %d seconds\n", (int)(new_t-t)));
+                               }
                        }
+                       t=new_t;
                }
-               t=new_t;
        }
 
        return std_ev->exit_code;
index a8dc651749973a9603bf55f881561424d5cd50e9..54a47c1d88229ff2965bdd0aaaaa200e8cc91440 100644 (file)
@@ -36,7 +36,6 @@ static void print_exit_message(void)
        DEBUG(DEBUG_NOTICE,("CTDB daemon shutting down\n"));
 }
 
-
 /* called when the "startup" event script has finished */
 static void ctdb_start_transport(struct ctdb_context *ctdb)
 {
@@ -690,6 +689,9 @@ int ctdb_start_daemon(struct ctdb_context *ctdb, bool do_fork)
        }
        block_signal(SIGPIPE);
 
+       ctdbd_pid = getpid();
+       DEBUG(DEBUG_ERR, ("Starting CTDBD as pid : %u\n", ctdbd_pid));
+
        if (ctdb->do_setsched) {
                /* try to set us up as realtime */
                ctdb_set_scheduler(ctdb);
index 2f78ebe76fbfc11cb8bae026ab00e31183eaf83f..bad4450103721021e9c9c26956d64852ec19ae5e 100644 (file)
@@ -31,7 +31,6 @@
 #include "../common/rb_tree.h"
 #include "db_wrap.h"
 
-
 #define ERR_TIMEOUT    20      /* timed out trying to reach node */
 #define ERR_NONODE     21      /* node does not exist */
 #define ERR_DISNODE    22      /* node is disconnected */