@@ -527,9 +527,12 @@ RRDSET *rrdset_create(const char *type, const char *id, const char *name, const
527527 }
528528
529529 // make sure the database is aligned
530- if (st -> last_updated .tv_sec % update_every ) {
531- st -> last_updated .tv_sec -= st -> last_updated .tv_sec % update_every ;
532- st -> last_updated .tv_usec = 0 ;
530+ if (st -> last_updated .tv_sec ) {
531+ if (st -> last_updated .tv_sec % update_every )
532+ st -> last_updated .tv_sec -= st -> last_updated .tv_sec % update_every ;
533+
534+ // aligned in the middle, for tolerance with plugins
535+ st -> last_updated .tv_usec = 500000ULL ;
533536 }
534537 }
535538
@@ -1103,7 +1106,7 @@ unsigned long long rrdset_done(RRDSET *st)
11031106
11041107 // align it to update_every
11051108 st -> last_collected_time .tv_sec -= st -> last_collected_time .tv_sec % st -> update_every ;
1106- st -> last_collected_time .tv_usec = 0 ;
1109+ st -> last_collected_time .tv_usec = 500000ULL ;
11071110
11081111 last_collect_ut = st -> last_collected_time .tv_sec * 1000000ULL + st -> last_collected_time .tv_usec - update_every_ut ;
11091112
@@ -1149,7 +1152,7 @@ unsigned long long rrdset_done(RRDSET *st)
11491152
11501153 // align it to update_every
11511154 st -> last_collected_time .tv_sec -= st -> last_collected_time .tv_sec % st -> update_every ;
1152- st -> last_collected_time .tv_usec = 0 ;
1155+ st -> last_collected_time .tv_usec = 500000ULL ;
11531156
11541157 unsigned long long ut = st -> last_collected_time .tv_sec * 1000000ULL + st -> last_collected_time .tv_usec - st -> usec_since_last_update ;
11551158 st -> last_updated .tv_sec = (time_t ) (ut / 1000000ULL );
0 commit comments