]> arthur.barton.de Git - netdata.git/commitdiff
Merge pull request #1249 from ktsaou/master
authorCosta Tsaousis <costa@tsaousis.gr>
Mon, 14 Nov 2016 23:00:11 +0000 (01:00 +0200)
committerGitHub <noreply@github.com>
Mon, 14 Nov 2016 23:00:11 +0000 (01:00 +0200)
another fix for plugins synchronization

node.d/node_modules/netdata.js
python.d/python_modules/base.py
src/log.c
src/rrd.c

index 706f75f4f6140aeb8c685bc84c87609311f71ee1..c56a9184ee0955ea44f4cff2ba9c0140d2421184 100644 (file)
@@ -208,15 +208,14 @@ var netdata = {
                        service.update_every = netdata.options.update_every;
 
                // align the runs
-               service.next_run = now - (now % (service.update_every * 1000));
+               service.next_run = now - (now % (service.update_every * 1000)) + (service.update_every * 1000);
 
                service.commit = function() {
                        if(this.added !== true) {
                                this.added = true;
                                
                                var now = new Date().getTime();
-                               while( this.next_run < now )
-                                       this.next_run += (this.update_every * 1000);
+                this.next_run = now - (now % (service.update_every * 1000)) + (service.update_every * 1000);
 
                                netdata.services.push(this);
                                if(netdata.options.DEBUG === true) netdata.debug(this.module.name + ': ' + this.name + ': service committed.');
@@ -553,8 +552,7 @@ var netdata = {
                        service.update();
 
                        now = new Date().getTime();
-                       while(service.next_run < now)
-                               service.next_run += (service.update_every * 1000);
+                       service.next_run = now - (now % (service.update_every * 1000)) + (service.update_every * 1000);
                }
 
                // 1/10th of update_every in pause
index 4ab9de4cfd873542b1fd0e46e8ba77b8621f31f3..9d428492c7a37697be809af3fe3dab079a25eb4e 100644 (file)
@@ -148,7 +148,7 @@ class SimpleService(threading.Thread):
         self.debug("starting data collection - update frequency:", str(step), ", retries allowed:", str(self.retries))
         while True:  # run forever, unless something is wrong
             now = float(time.time())
-            next = self.timetable['next'] = now - (now % step) + step + (step / 3) # add 1/3 into the iteration to sync with netdata
+            next = self.timetable['next'] = now - (now % step) + step
 
             # it is important to do this in a loop
             # sleep() is interruptable
index bf2ad6b381fb6531f0f436ebe86411451c1e9074..dc00834236bf982dac79a5232614fa36260a5505 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -125,7 +125,11 @@ int error_log_limit(int reset) {
 
     // prevent all logs if the errors per period is 0
     if(error_log_errors_per_period == 0)
+#ifdef NETDATA_INTERNAL_CHECKS
+        return 0;
+#else
         return 1;
+#endif
 
     time_t now = time(NULL);
     if(!start) start = now;
@@ -185,7 +189,11 @@ int error_log_limit(int reset) {
         prevented++;
 
         // prevent logging this error
+#ifdef NETDATA_INTERNAL_CHECKS
+        return 0;
+#else
         return 1;
+#endif
     }
 
     return 0;
index 7d8bf3940b9502e8710b7a1d901312f267068adb..52de637bccf97c1b0bdd16a744ed4db030ccbf34 100644 (file)
--- a/src/rrd.c
+++ b/src/rrd.c
@@ -438,7 +438,7 @@ void rrdset_reset(RRDSET *st)
         memset(rd->values, 0, rd->entries * sizeof(storage_number));
     }
 }
-static long align_entries_to_pagesize(long entries) {
+static inline long align_entries_to_pagesize(long entries) {
     if(entries < 5) entries = 5;
     if(entries > RRD_HISTORY_ENTRIES_MAX) entries = RRD_HISTORY_ENTRIES_MAX;
 
@@ -460,6 +460,11 @@ static long align_entries_to_pagesize(long entries) {
 #endif
 }
 
+static inline void timeval_align(struct timeval *tv, int update_every) {
+    tv->tv_sec -= tv->tv_sec % update_every;
+    tv->tv_usec = 500000;
+}
+
 RRDSET *rrdset_create(const char *type, const char *id, const char *name, const char *family, const char *context, const char *title, const char *units, long priority, int update_every, int chart_type)
 {
     if(!type || !type[0]) {
@@ -527,10 +532,8 @@ RRDSET *rrdset_create(const char *type, const char *id, const char *name, const
         }
 
         // make sure the database is aligned
-        if(st->last_updated.tv_sec % update_every) {
-            st->last_updated.tv_sec -= st->last_updated.tv_sec % update_every;
-            st->last_updated.tv_usec = 0;
-        }
+        if(st->last_updated.tv_sec)
+            timeval_align(&st->last_updated, update_every);
     }
 
     if(st) {
@@ -1100,10 +1103,7 @@ unsigned long long rrdset_done(RRDSET *st)
         // it is the first entry
         // set the last_collected_time to now
         gettimeofday(&st->last_collected_time, NULL);
-
-        // align it to update_every
-        st->last_collected_time.tv_sec -= st->last_collected_time.tv_sec % st->update_every;
-        st->last_collected_time.tv_usec = 0;
+        timeval_align(&st->last_collected_time, st->update_every);
 
         last_collect_ut = st->last_collected_time.tv_sec * 1000000ULL + st->last_collected_time.tv_usec - update_every_ut;
 
@@ -1146,10 +1146,7 @@ unsigned long long rrdset_done(RRDSET *st)
         st->usec_since_last_update = update_every_ut;
 
         gettimeofday(&st->last_collected_time, NULL);
-
-        // align it to update_every
-        st->last_collected_time.tv_sec -= st->last_collected_time.tv_sec % st->update_every;
-        st->last_collected_time.tv_usec = 0;
+        timeval_align(&st->last_collected_time, st->update_every);
 
         unsigned long long ut = st->last_collected_time.tv_sec * 1000000ULL + st->last_collected_time.tv_usec - st->usec_since_last_update;
         st->last_updated.tv_sec = (time_t) (ut / 1000000ULL);