[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