]> arthur.barton.de Git - netdata.git/blobdiff - src/rrd.c
handle usleep() on systems that do not accept more than 999999 usec; implement altern...
[netdata.git] / src / rrd.c
index 327e9ccb5c256959e8c3d1a7e5788e2d05aae1a1..dd7698ab8d443cbfd526e11f2512a45e20e15e33 100644 (file)
--- a/src/rrd.c
+++ b/src/rrd.c
@@ -860,7 +860,7 @@ unsigned long long rrdset_done(RRDSET *st)
                // calculate the proper last_collected_time, using usec_since_last_update
                unsigned long long ut = st->last_collected_time.tv_sec * 1000000ULL + st->last_collected_time.tv_usec + st->usec_since_last_update;
                st->last_collected_time.tv_sec = (time_t) (ut / 1000000ULL);
-               st->last_collected_time.tv_usec = (useconds_t) (ut % 1000000ULL);
+               st->last_collected_time.tv_usec = (suseconds_t) (ut % 1000000ULL);
        }
 
        // if this set has not been updated in the past
@@ -870,7 +870,7 @@ unsigned long long rrdset_done(RRDSET *st)
                // set a fake last_updated, in the past using usec_since_last_update
                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);
-               st->last_updated.tv_usec = (useconds_t) (ut % 1000000ULL);
+               st->last_updated.tv_usec = (suseconds_t) (ut % 1000000ULL);
 
                // the first entry should not be stored
                store_this_entry = 0;
@@ -890,7 +890,7 @@ unsigned long long rrdset_done(RRDSET *st)
 
                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);
-               st->last_updated.tv_usec = (useconds_t) (ut % 1000000ULL);
+               st->last_updated.tv_usec = (suseconds_t) (ut % 1000000ULL);
 
                // the first entry should not be stored
                store_this_entry = 0;
@@ -1247,6 +1247,7 @@ unsigned long long rrdset_done(RRDSET *st)
        if(likely(stored_entries || !store_this_entry)) {
                st->last_updated.tv_sec = st->last_collected_time.tv_sec;
                st->last_updated.tv_usec = st->last_collected_time.tv_usec;
+               st->last_collected_total  = st->collected_total;
        }
 
        for( rd = st->dimensions; likely(rd) ; rd = rd->next ) {
@@ -1276,7 +1277,6 @@ unsigned long long rrdset_done(RRDSET *st)
                        , rd->calculated_value
                        );
        }
-       st->last_collected_total  = st->collected_total;
 
        // ALL DONE ABOUT THE DATA UPDATE
        // --------------------------------------------------------------------