[SCM] CTDB repository - branch master updated - 1.0.99-25-g11193e1

Ronnie Sahlberg sahlberg at samba.org
Sun Oct 25 20:14:24 MDT 2009


The branch, master has been updated
       via  11193e1e192bee6f579bdf1303153571a82711d7 (commit)
      from  331c6e3afd96d8b5e191153a631efdbdabb6ea33 (commit)

http://gitweb.samba.org/?p=sahlberg/ctdb.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 11193e1e192bee6f579bdf1303153571a82711d7
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Mon Oct 26 13:20:35 2009 +1100

    patch the event loop so we read the current time every iteration.
    
    log an error if the clock jumps backwards
    also log an error if the clock jumps >5 seconds forward (we assume here we will get at least one event every 5 seconds)

-----------------------------------------------------------------------

Summary of changes:
 lib/events/events_epoll.c    |   14 ++++++++++++++
 lib/events/events_select.c   |   14 ++++++++++++++
 lib/events/events_standard.c |   14 ++++++++++++++
 3 files changed, 42 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/events/events_epoll.c b/lib/events/events_epoll.c
index d10eb79..b7172a7 100644
--- a/lib/events/events_epoll.c
+++ b/lib/events/events_epoll.c
@@ -21,6 +21,7 @@
 */
 
 #include "includes.h"
+#include "system/time.h"
 #include "system/filesys.h"
 #include "system/network.h"
 #include "lib/util/dlinklist.h"
@@ -457,12 +458,25 @@ static int epoll_event_loop_once(struct event_context *ev)
 */
 static int epoll_event_loop_wait(struct event_context *ev)
 {
+	static time_t t=0;
+	time_t new_t;
 	struct epoll_event_context *epoll_ev = talloc_get_type(ev->additional_data,
 							   struct epoll_event_context);
 	while (epoll_ev->num_fd_events) {
 		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)));
+			}
+		}
+		t=new_t;
 	}
 
 	return 0;
diff --git a/lib/events/events_select.c b/lib/events/events_select.c
index 3f9eeb5..c908b12 100644
--- a/lib/events/events_select.c
+++ b/lib/events/events_select.c
@@ -24,6 +24,7 @@
 */
 
 #include "includes.h"
+#include "system/time.h"
 #include "system/filesys.h"
 #include "system/select.h"
 #include "lib/util/dlinklist.h"
@@ -270,6 +271,8 @@ static int select_event_loop_once(struct event_context *ev)
 */
 static int select_event_loop_wait(struct event_context *ev)
 {
+	static time_t t=0;
+	time_t new_t;
 	struct select_event_context *select_ev = talloc_get_type(ev->additional_data,
 							   struct select_event_context);
 	select_ev->exit_code = 0;
@@ -278,6 +281,17 @@ 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)));
+			}
+		}
+		t=new_t;
 	}
 
 	return select_ev->exit_code;
diff --git a/lib/events/events_standard.c b/lib/events/events_standard.c
index 5e529d6..35516ea 100644
--- a/lib/events/events_standard.c
+++ b/lib/events/events_standard.c
@@ -28,6 +28,7 @@
 */
 
 #include "includes.h"
+#include "system/time.h"
 #include "system/filesys.h"
 #include "system/network.h"
 #include "system/select.h" /* needed for HAVE_EVENTS_EPOLL */
@@ -571,6 +572,8 @@ static int std_event_loop_once(struct event_context *ev)
 */
 static int std_event_loop_wait(struct event_context *ev)
 {
+	static time_t t=0;
+	time_t new_t;
 	struct std_event_context *std_ev = talloc_get_type(ev->additional_data,
 							   struct std_event_context);
 	std_ev->exit_code = 0;
@@ -579,6 +582,17 @@ 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)));
+			}
+		}
+		t=new_t;
 	}
 
 	return std_ev->exit_code;


-- 
CTDB repository


More information about the samba-cvs mailing list