Handle coverity issues related to Y2K38_SAFETY (#16583)
* Switch update_every_s to uint32_t Fix coverity issues related to Y2K38_SAFETY * Fix CI
Stelios Fragkakis committed
Dec 12, 2023 at 16:28 UTC
21462af834abcdf136c53d21379e74b2c7306839
10 files changed
+65
-69
database/engine/cache.c
+3
-3
@@ -1949,13 +1949,13 @@ time_t pgc_page_end_time_s(PGC_PAGE *page) {
1949
return page->end_time_s;
1950
}
1951
1952
-time_t pgc_page_update_every_s(PGC_PAGE *page) {
1952
+uint32_t pgc_page_update_every_s(PGC_PAGE *page) {
1953
return page->update_every_s;
1954
}
1955
1956
-time_t pgc_page_fix_update_every(PGC_PAGE *page, time_t update_every_s) {
1956
+uint32_t pgc_page_fix_update_every(PGC_PAGE *page, uint32_t update_every_s) {
1957
if(page->update_every_s == 0)
1958
- page->update_every_s = (uint32_t) update_every_s;
1958
+ page->update_every_s = update_every_s;
1959
1960
return page->update_every_s;
1961
}
database/engine/cache.h
+3
-3
@@ -27,7 +27,7 @@ typedef struct pgc_entry {
27
time_t end_time_s; // the end time of the page
28
size_t size; // the size in bytes of the allocation, outside the cache
29
void *data; // a pointer to data outside the cache
30
- uint32_t update_every_s; // the update every of the page
30
+ uint32_t update_every_s; // the update every of the page
31
bool hot; // true if this entry is currently being collected
32
uint8_t *custom_data;
33
} PGC_ENTRY;
@@ -210,8 +210,8 @@ Word_t pgc_page_section(PGC_PAGE *page);
210
Word_t pgc_page_metric(PGC_PAGE *page);
211
time_t pgc_page_start_time_s(PGC_PAGE *page);
212
time_t pgc_page_end_time_s(PGC_PAGE *page);
213
-time_t pgc_page_update_every_s(PGC_PAGE *page);
214
-time_t pgc_page_fix_update_every(PGC_PAGE *page, time_t update_every_s);
213
+uint32_t pgc_page_update_every_s(PGC_PAGE *page);
214
+uint32_t pgc_page_fix_update_every(PGC_PAGE *page, uint32_t update_every_s);
215
time_t pgc_page_fix_end_time_s(PGC_PAGE *page, time_t end_time_s);
216
void *pgc_page_data(PGC_PAGE *page);
217
void *pgc_page_custom_data(PGC *cache, PGC_PAGE *page);
database/engine/journalfile.c
+3
-3
@@ -700,7 +700,7 @@ static void journalfile_restore_extent_metadata(struct rrdengine_instance *ctx,
700
.section = (Word_t)ctx,
701
.first_time_s = vd.start_time_s,
702
.last_time_s = vd.end_time_s,
703
- .latest_update_every_s = (uint32_t) vd.update_every_s,
703
+ .latest_update_every_s = vd.update_every_s,
704
};
705
706
bool added;
@@ -1226,7 +1226,7 @@ void *journalfile_v2_write_data_page(struct journal_v2_header *j2_header, void *
1226
data_page->delta_end_s = (uint32_t) (page_info->end_time_s - (time_t) (j2_header->start_time_ut) / USEC_PER_SEC);
1227
data_page->extent_index = page_info->extent_index;
1228
1229
- data_page->update_every_s = (uint32_t) page_info->update_every_s;
1229
+ data_page->update_every_s = page_info->update_every_s;
1230
data_page->page_length = (uint16_t) (ei ? ei->page_length : page_info->page_length);
1231
data_page->type = 0;
1232
@@ -1252,7 +1252,7 @@ static void *journalfile_v2_write_descriptors(struct journal_v2_header *j2_heade
1252
page_info = *PValue;
1253
// Write one descriptor and return the next data page location
1254
data_page = journalfile_v2_write_data_page(j2_header, (void *) data_page, page_info);
1255
- update_every_s = (uint32_t) page_info->update_every_s;
1255
+ update_every_s = page_info->update_every_s;
1256
if (NULL == data_page)
1257
break;
1258
}
database/engine/metric.c
+12
-15
@@ -162,8 +162,8 @@ static inline bool metric_release_and_can_be_deleted(MRG *mrg __maybe_unused, ME
162
163
__atomic_sub_fetch(&mrg->index[partition].stats.current_references, 1, __ATOMIC_RELAXED);
164
165
- time_t first, last, ue;
166
- mrg_metric_get_retention(mrg, metric, &first, &last, &ue);
165
+ time_t first, last;
166
+ mrg_metric_get_retention(mrg, metric, &first, &last, NULL);
167
return (!first || !last || first > last);
168
}
169
@@ -394,8 +394,8 @@ inline bool mrg_metric_set_first_time_s(MRG *mrg __maybe_unused, METRIC *metric,
394
return true;
395
}
396
397
-inline void mrg_metric_expand_retention(MRG *mrg __maybe_unused, METRIC *metric, time_t first_time_s, time_t last_time_s, time_t update_every_s) {
398
- internal_fatal(first_time_s < 0 || last_time_s < 0 || update_every_s < 0,
397
+inline void mrg_metric_expand_retention(MRG *mrg __maybe_unused, METRIC *metric, time_t first_time_s, time_t last_time_s, uint32_t update_every_s) {
398
+ internal_fatal(first_time_s < 0 || last_time_s < 0,
399
"DBENGINE METRIC: timestamp is negative");
400
internal_fatal(first_time_s > max_acceptable_collected_time(),
401
"DBENGINE METRIC: metric first time is in the future");
@@ -425,13 +425,14 @@ inline time_t mrg_metric_get_first_time_s(MRG *mrg __maybe_unused, METRIC *metri
425
return mrg_metric_get_first_time_s_smart(mrg, metric);
426
}
427
428
-inline void mrg_metric_get_retention(MRG *mrg __maybe_unused, METRIC *metric, time_t *first_time_s, time_t *last_time_s, time_t *update_every_s) {
428
+inline void mrg_metric_get_retention(MRG *mrg __maybe_unused, METRIC *metric, time_t *first_time_s, time_t *last_time_s, uint32_t *update_every_s) {
429
time_t clean = __atomic_load_n(&metric->latest_time_s_clean, __ATOMIC_RELAXED);
430
time_t hot = __atomic_load_n(&metric->latest_time_s_hot, __ATOMIC_RELAXED);
431
432
*last_time_s = MAX(clean, hot);
433
*first_time_s = mrg_metric_get_first_time_s_smart(mrg, metric);
434
- *update_every_s = __atomic_load_n(&metric->latest_update_every_s, __ATOMIC_RELAXED);
434
+ if (update_every_s)
435
+ *update_every_s = __atomic_load_n(&metric->latest_update_every_s, __ATOMIC_RELAXED);
436
}
437
438
inline bool mrg_metric_set_clean_latest_time_s(MRG *mrg __maybe_unused, METRIC *metric, time_t latest_time_s) {
@@ -498,8 +499,8 @@ inline bool mrg_metric_zero_disk_retention(MRG *mrg __maybe_unused, METRIC *metr
499
}
500
} while(do_again);
501
501
- time_t first, last, ue;
502
- mrg_metric_get_retention(mrg, metric, &first, &last, &ue);
502
+ time_t first, last;
503
+ mrg_metric_get_retention(mrg, metric, &first, &last, NULL);
504
return (first && last && first < last);
505
}
506
@@ -524,25 +525,21 @@ inline time_t mrg_metric_get_latest_time_s(MRG *mrg __maybe_unused, METRIC *metr
525
return MAX(clean, hot);
526
}
527
527
-inline bool mrg_metric_set_update_every(MRG *mrg __maybe_unused, METRIC *metric, time_t update_every_s) {
528
- internal_fatal(update_every_s < 0, "DBENGINE METRIC: timestamp is negative");
529
-
528
+inline bool mrg_metric_set_update_every(MRG *mrg __maybe_unused, METRIC *metric, uint32_t update_every_s) {
529
if(update_every_s > 0)
530
return set_metric_field_with_condition(metric->latest_update_every_s, update_every_s, true);
531
532
return false;
533
}
534
536
-inline bool mrg_metric_set_update_every_s_if_zero(MRG *mrg __maybe_unused, METRIC *metric, time_t update_every_s) {
537
- internal_fatal(update_every_s < 0, "DBENGINE METRIC: timestamp is negative");
538
-
535
+inline bool mrg_metric_set_update_every_s_if_zero(MRG *mrg __maybe_unused, METRIC *metric, uint32_t update_every_s) {
536
if(update_every_s > 0)
537
return set_metric_field_with_condition(metric->latest_update_every_s, update_every_s, _current <= 0);
538
539
return false;
540
}
541
545
-inline time_t mrg_metric_get_update_every_s(MRG *mrg __maybe_unused, METRIC *metric) {
542
+inline uint32_t mrg_metric_get_update_every_s(MRG *mrg __maybe_unused, METRIC *metric) {
543
return __atomic_load_n(&metric->latest_update_every_s, __ATOMIC_RELAXED);
544
}
545
database/engine/metric.h
+5
-5
@@ -70,12 +70,12 @@ bool mrg_metric_set_clean_latest_time_s(MRG *mrg, METRIC *metric, time_t latest_
70
bool mrg_metric_set_hot_latest_time_s(MRG *mrg, METRIC *metric, time_t latest_time_s);
71
time_t mrg_metric_get_latest_time_s(MRG *mrg, METRIC *metric);
72
73
-bool mrg_metric_set_update_every(MRG *mrg, METRIC *metric, time_t update_every_s);
74
-bool mrg_metric_set_update_every_s_if_zero(MRG *mrg, METRIC *metric, time_t update_every_s);
75
-time_t mrg_metric_get_update_every_s(MRG *mrg, METRIC *metric);
73
+bool mrg_metric_set_update_every(MRG *mrg, METRIC *metric, uint32_t update_every_s);
74
+bool mrg_metric_set_update_every_s_if_zero(MRG *mrg, METRIC *metric, uint32_t update_every_s);
75
+uint32_t mrg_metric_get_update_every_s(MRG *mrg, METRIC *metric);
76
77
-void mrg_metric_expand_retention(MRG *mrg, METRIC *metric, time_t first_time_s, time_t last_time_s, time_t update_every_s);
78
-void mrg_metric_get_retention(MRG *mrg, METRIC *metric, time_t *first_time_s, time_t *last_time_s, time_t *update_every_s);
77
+void mrg_metric_expand_retention(MRG *mrg, METRIC *metric, time_t first_time_s, time_t last_time_s, uint32_t update_every_s);
78
+void mrg_metric_get_retention(MRG *mrg, METRIC *metric, time_t *first_time_s, time_t *last_time_s, uint32_t *update_every_s);
79
bool mrg_metric_zero_disk_retention(MRG *mrg __maybe_unused, METRIC *metric);
80
81
bool mrg_metric_set_writer(MRG *mrg, METRIC *metric);
database/engine/pagecache.c
+9
-9
@@ -246,7 +246,7 @@ static size_t get_page_list_from_pgc(PGC *cache, METRIC *metric, struct rrdengin
246
247
time_t page_start_time_s = pgc_page_start_time_s(page);
248
time_t page_end_time_s = pgc_page_end_time_s(page);
249
- time_t page_update_every_s = pgc_page_update_every_s(page);
249
+ uint32_t page_update_every_s = pgc_page_update_every_s(page);
250
251
if(!page_update_every_s)
252
page_update_every_s = dt_s;
@@ -282,7 +282,7 @@ static size_t get_page_list_from_pgc(PGC *cache, METRIC *metric, struct rrdengin
282
pd->metric_id = metric_id;
283
pd->first_time_s = page_start_time_s;
284
pd->last_time_s = page_end_time_s;
285
- pd->update_every_s = (uint32_t) page_update_every_s;
285
+ pd->update_every_s = page_update_every_s;
286
pd->page = (open_cache_mode) ? NULL : page;
287
pd->status |= tags;
288
@@ -332,8 +332,8 @@ static size_t get_page_list_from_pgc(PGC *cache, METRIC *metric, struct rrdengin
332
333
static void pgc_inject_gap(struct rrdengine_instance *ctx, METRIC *metric, time_t start_time_s, time_t end_time_s) {
334
335
- time_t db_first_time_s, db_last_time_s, db_update_every_s;
336
- mrg_metric_get_retention(main_mrg, metric, &db_first_time_s, &db_last_time_s, &db_update_every_s);
335
+ time_t db_first_time_s, db_last_time_s;
336
+ mrg_metric_get_retention(main_mrg, metric, &db_first_time_s, &db_last_time_s, NULL);
337
338
if(is_page_in_time_range(start_time_s, end_time_s, db_first_time_s, db_last_time_s) != PAGE_IS_IN_RANGE)
339
return;
@@ -845,7 +845,7 @@ struct pgc_page *pg_cache_lookup_next(
845
struct rrdengine_instance *ctx,
846
PDC *pdc,
847
time_t now_s,
848
- time_t last_update_every_s,
848
+ uint32_t last_update_every_s,
849
size_t *entries
850
) {
851
if (unlikely(!pdc))
@@ -905,7 +905,7 @@ struct pgc_page *pg_cache_lookup_next(
905
906
time_t page_start_time_s = pgc_page_start_time_s(page);
907
time_t page_end_time_s = pgc_page_end_time_s(page);
908
- time_t page_update_every_s = pgc_page_update_every_s(page);
908
+ uint32_t page_update_every_s = pgc_page_update_every_s(page);
909
910
if(unlikely(page_start_time_s == INVALID_TIME || page_end_time_s == INVALID_TIME)) {
911
__atomic_add_fetch(&rrdeng_cache_efficiency_stats.pages_zero_time_skipped, 1, __ATOMIC_RELAXED);
@@ -918,7 +918,7 @@ struct pgc_page *pg_cache_lookup_next(
918
if (unlikely(page_update_every_s <= 0 || page_update_every_s > 86400)) {
919
__atomic_add_fetch(&rrdeng_cache_efficiency_stats.pages_invalid_update_every_fixed, 1, __ATOMIC_RELAXED);
920
page_update_every_s = pgc_page_fix_update_every(page, last_update_every_s);
921
- pd->update_every_s = (uint32_t) page_update_every_s;
921
+ pd->update_every_s = page_update_every_s;
922
}
923
924
size_t entries_by_size = pgd_slots_used(pgc_page_data(page));
@@ -983,7 +983,7 @@ struct pgc_page *pg_cache_lookup_next(
983
return page;
984
}
985
986
-void pgc_open_add_hot_page(Word_t section, Word_t metric_id, time_t start_time_s, time_t end_time_s, time_t update_every_s,
986
+void pgc_open_add_hot_page(Word_t section, Word_t metric_id, time_t start_time_s, time_t end_time_s, uint32_t update_every_s,
987
struct rrdengine_datafile *datafile, uint64_t extent_offset, unsigned extent_size, uint32_t page_length) {
988
989
if(!datafile_acquire(datafile, DATAFILE_ACQUIRE_OPEN_CACHE)) // for open cache item
@@ -1003,7 +1003,7 @@ void pgc_open_add_hot_page(Word_t section, Word_t metric_id, time_t start_time_s
1003
.metric_id = metric_id,
1004
.start_time_s = start_time_s,
1005
.end_time_s = end_time_s,
1006
- .update_every_s = (uint32_t) update_every_s,
1006
+ .update_every_s = update_every_s,
1007
.size = 0,
1008
.data = datafile,
1009
.custom_data = (uint8_t *) &ext_io_data,
database/engine/pagecache.h
+2
-2
@@ -54,9 +54,9 @@ struct page_details_control;
54
void rrdeng_prep_wait(struct page_details_control *pdc);
55
void rrdeng_prep_query(struct page_details_control *pdc, bool worker);
56
void pg_cache_preload(struct rrdeng_query_handle *handle);
57
-struct pgc_page *pg_cache_lookup_next(struct rrdengine_instance *ctx, struct page_details_control *pdc, time_t now_s, time_t last_update_every_s, size_t *entries);
57
+struct pgc_page *pg_cache_lookup_next(struct rrdengine_instance *ctx, struct page_details_control *pdc, time_t now_s, uint32_t last_update_every_s, size_t *entries);
58
void pgc_and_mrg_initialize(void);
59
60
-void pgc_open_add_hot_page(Word_t section, Word_t metric_id, time_t start_time_s, time_t end_time_s, time_t update_every_s, struct rrdengine_datafile *datafile, uint64_t extent_offset, unsigned extent_size, uint32_t page_length);
60
+void pgc_open_add_hot_page(Word_t section, Word_t metric_id, time_t start_time_s, time_t end_time_s, uint32_t update_every_s, struct rrdengine_datafile *datafile, uint64_t extent_offset, unsigned extent_size, uint32_t page_length);
61
62
#endif /* NETDATA_PAGECACHE_H */
database/engine/pdc.c
+4
-5
@@ -628,7 +628,7 @@ void collect_page_flags_to_buffer(BUFFER *wb, RRDENG_COLLECT_PAGE_FLAGS flags) {
628
buffer_strcat(wb, "STEP_UNALIGNED");
629
}
630
631
-inline VALIDATED_PAGE_DESCRIPTOR validate_extent_page_descr(const struct rrdeng_extent_page_descr *descr, time_t now_s, time_t overwrite_zero_update_every_s, bool have_read_error) {
631
+inline VALIDATED_PAGE_DESCRIPTOR validate_extent_page_descr(const struct rrdeng_extent_page_descr *descr, time_t now_s, uint32_t overwrite_zero_update_every_s, bool have_read_error) {
632
time_t start_time_s = (time_t) (descr->start_time_ut / USEC_PER_SEC);
633
634
time_t end_time_s;
@@ -666,12 +666,12 @@ VALIDATED_PAGE_DESCRIPTOR validate_page(
666
uuid_t *uuid,
667
time_t start_time_s,
668
time_t end_time_s,
669
- time_t update_every_s, // can be zero, if unknown
669
+ uint32_t update_every_s, // can be zero, if unknown
670
size_t page_length,
671
uint8_t page_type,
672
size_t entries, // can be zero, if unknown
673
time_t now_s, // can be zero, to disable future timestamp check
674
- time_t overwrite_zero_update_every_s, // can be zero, if unknown
674
+ uint32_t overwrite_zero_update_every_s, // can be zero, if unknown
675
bool have_read_error,
676
const char *msg,
677
RRDENG_COLLECT_PAGE_FLAGS flags) {
@@ -732,7 +732,6 @@ VALIDATED_PAGE_DESCRIPTOR validate_page(
732
(now_s && vd.end_time_s > now_s) ||
733
vd.start_time_s <= 0 ||
734
vd.end_time_s <= 0 ||
735
- vd.update_every_s < 0 ||
735
(vd.start_time_s == vd.end_time_s && vd.entries > 1) ||
736
(vd.update_every_s == 0 && vd.entries > 1))
737
{
@@ -797,7 +796,7 @@ VALIDATED_PAGE_DESCRIPTOR validate_page(
796
);
797
}
798
else {
800
- const char *err_valid = (vd.is_valid) ? "" : "found invalid, ";
799
+ const char *err_valid = "";
800
const char *err_start = (vd.start_time_s == start_time_s) ? "" : "start time updated, ";
801
const char *err_end = (vd.end_time_s == end_time_s) ? "" : "end time updated, ";
802
const char *err_update = (vd.update_every_s == update_every_s) ? "" : "update every updated, ";
database/engine/rrdengine.h
+7
-7
@@ -153,9 +153,9 @@ struct jv2_metrics_info {
153
struct jv2_page_info {
154
time_t start_time_s;
155
time_t end_time_s;
156
- time_t update_every_s;
157
- size_t page_length;
156
+ uint32_t update_every_s;
157
uint32_t extent_index;
158
+ size_t page_length;
159
void *custom_data;
160
161
// private
@@ -217,7 +217,7 @@ struct rrdeng_query_handle {
217
218
// internal data
219
time_t now_s;
220
- time_t dt_s;
220
+ uint32_t dt_s;
221
222
unsigned position;
223
unsigned entries;
@@ -481,7 +481,7 @@ struct page_descr_with_data *page_descriptor_get(void);
481
typedef struct validated_page_descriptor {
482
time_t start_time_s;
483
time_t end_time_s;
484
- time_t update_every_s;
484
+ uint32_t update_every_s;
485
size_t page_length;
486
size_t point_size;
487
size_t entries;
@@ -498,16 +498,16 @@ typedef struct validated_page_descriptor {
498
VALIDATED_PAGE_DESCRIPTOR validate_page(uuid_t *uuid,
499
time_t start_time_s,
500
time_t end_time_s,
501
- time_t update_every_s,
501
+ uint32_t update_every_s,
502
size_t page_length,
503
uint8_t page_type,
504
size_t entries,
505
time_t now_s,
506
- time_t overwrite_zero_update_every_s,
506
+ uint32_t overwrite_zero_update_every_s,
507
bool have_read_error,
508
const char *msg,
509
RRDENG_COLLECT_PAGE_FLAGS flags);
510
-VALIDATED_PAGE_DESCRIPTOR validate_extent_page_descr(const struct rrdeng_extent_page_descr *descr, time_t now_s, time_t overwrite_zero_update_every_s, bool have_read_error);
510
+VALIDATED_PAGE_DESCRIPTOR validate_extent_page_descr(const struct rrdeng_extent_page_descr *descr, time_t now_s, uint32_t overwrite_zero_update_every_s, bool have_read_error);
511
void collect_page_flags_to_buffer(BUFFER *wb, RRDENG_COLLECT_PAGE_FLAGS flags);
512
513
typedef enum {
database/engine/rrdengineapi.c
+17
-17
@@ -192,9 +192,9 @@ STORAGE_METRIC_HANDLE *rrdeng_metric_get_or_create(RRDDIM *rd, STORAGE_INSTANCE
192
// collect ops
193
194
static inline void check_and_fix_mrg_update_every(struct rrdeng_collect_handle *handle) {
195
- if(unlikely((time_t)(handle->update_every_ut / USEC_PER_SEC) != mrg_metric_get_update_every_s(main_mrg, handle->metric))) {
196
- internal_error(true, "DBENGINE: collection handle has update every %ld, but the metric registry has %ld. Fixing it.",
197
- (time_t)(handle->update_every_ut / USEC_PER_SEC), mrg_metric_get_update_every_s(main_mrg, handle->metric));
195
+ if(unlikely((uint32_t)(handle->update_every_ut / USEC_PER_SEC) != mrg_metric_get_update_every_s(main_mrg, handle->metric))) {
196
+ internal_error(true, "DBENGINE: collection handle has update every %u, but the metric registry has %u. Fixing it.",
197
+ (uint32_t)(handle->update_every_ut / USEC_PER_SEC), mrg_metric_get_update_every_s(main_mrg, handle->metric));
198
199
if(unlikely(!handle->update_every_ut))
200
handle->update_every_ut = (usec_t)mrg_metric_get_update_every_s(main_mrg, handle->metric) * USEC_PER_SEC;
@@ -213,7 +213,7 @@ static inline bool check_completed_page_consistency(struct rrdeng_collect_handle
213
uuid_t *uuid = mrg_metric_uuid(main_mrg, handle->metric);
214
time_t start_time_s = pgc_page_start_time_s(handle->pgc_page);
215
time_t end_time_s = pgc_page_end_time_s(handle->pgc_page);
216
- time_t update_every_s = pgc_page_update_every_s(handle->pgc_page);
216
+ uint32_t update_every_s = pgc_page_update_every_s(handle->pgc_page);
217
size_t page_length = handle->page_position * CTX_POINT_SIZE_BYTES(ctx);
218
size_t entries = handle->page_position;
219
time_t overwrite_zero_update_every_s = (time_t)(handle->update_every_ut / USEC_PER_SEC);
@@ -288,8 +288,8 @@ STORAGE_COLLECT_HANDLE *rrdeng_store_metric_init(STORAGE_METRIC_HANDLE *db_metri
288
// data collection may be able to go back in time and during the addition of new pages
289
// clean pages may be found matching ours!
290
291
- time_t db_first_time_s, db_last_time_s, db_update_every_s;
292
- mrg_metric_get_retention(main_mrg, metric, &db_first_time_s, &db_last_time_s, &db_update_every_s);
291
+ time_t db_first_time_s, db_last_time_s;
292
+ mrg_metric_get_retention(main_mrg, metric, &db_first_time_s, &db_last_time_s, NULL);
293
handle->page_end_time_ut = (usec_t)db_last_time_s * USEC_PER_SEC;
294
295
return (STORAGE_COLLECT_HANDLE *)handle;
@@ -336,7 +336,7 @@ static void rrdeng_store_metric_create_new_page(struct rrdeng_collect_handle *ha
336
PGD *data,
337
size_t data_size) {
338
time_t point_in_time_s = (time_t)(point_in_time_ut / USEC_PER_SEC);
339
- const time_t update_every_s = (time_t)(handle->update_every_ut / USEC_PER_SEC);
339
+ const uint32_t update_every_s = (uint32_t)(handle->update_every_ut / USEC_PER_SEC);
340
341
PGC_ENTRY page_entry = {
342
.section = (Word_t) ctx,
@@ -345,7 +345,7 @@ static void rrdeng_store_metric_create_new_page(struct rrdeng_collect_handle *ha
345
.end_time_s = point_in_time_s,
346
.size = data_size,
347
.data = data,
348
- .update_every_s = (uint32_t) update_every_s,
348
+ .update_every_s = update_every_s,
349
.hot = true
350
};
351
@@ -364,11 +364,11 @@ static void rrdeng_store_metric_create_new_page(struct rrdeng_collect_handle *ha
364
nd_log_limit_static_global_var(erl, 1, 0);
365
nd_log_limit(&erl, NDLS_DAEMON, NDLP_WARNING,
366
#endif
367
- "DBENGINE: metric '%s' new page from %ld to %ld, update every %ld, has a conflict in main cache "
368
- "with existing %s%s page from %ld to %ld, update every %ld - "
367
+ "DBENGINE: metric '%s' new page from %ld to %ld, update every %u, has a conflict in main cache "
368
+ "with existing %s%s page from %ld to %ld, update every %u - "
369
"is it collected more than once?",
370
uuid,
371
- page_entry.start_time_s, page_entry.end_time_s, (time_t)page_entry.update_every_s,
371
+ page_entry.start_time_s, page_entry.end_time_s, page_entry.update_every_s,
372
pgc_is_page_hot(pgc_page) ? "hot" : "not-hot",
373
pgc_page_data(pgc_page) == PGD_EMPTY ? " gap" : "",
374
pgc_page_start_time_s(pgc_page), pgc_page_end_time_s(pgc_page), pgc_page_update_every_s(pgc_page)
@@ -644,8 +644,8 @@ int rrdeng_store_metric_finalize(STORAGE_COLLECT_HANDLE *collection_handle) {
644
if((handle->options & RRDENG_1ST_METRIC_WRITER) && !mrg_metric_clear_writer(main_mrg, handle->metric))
645
internal_fatal(true, "DBENGINE: metric is already released");
646
647
- time_t first_time_s, last_time_s, update_every_s;
648
- mrg_metric_get_retention(main_mrg, handle->metric, &first_time_s, &last_time_s, &update_every_s);
647
+ time_t first_time_s, last_time_s;
648
+ mrg_metric_get_retention(main_mrg, handle->metric, &first_time_s, &last_time_s, NULL);
649
650
mrg_metric_release(main_mrg, handle->metric);
651
freez(handle);
@@ -736,7 +736,8 @@ void rrdeng_load_metric_init(STORAGE_METRIC_HANDLE *db_metric_handle,
736
// is inserted into the main cache, to avoid scanning the journals
737
// again for pages matching the gap.
738
739
- time_t db_first_time_s, db_last_time_s, db_update_every_s;
739
+ time_t db_first_time_s, db_last_time_s;
740
+ uint32_t db_update_every_s;
741
mrg_metric_get_retention(main_mrg, metric, &db_first_time_s, &db_last_time_s, &db_update_every_s);
742
743
if(is_page_in_time_range(start_time_s, end_time_s, db_first_time_s, db_last_time_s) == PAGE_IS_IN_RANGE) {
@@ -799,7 +800,7 @@ static bool rrdeng_load_page_next(struct storage_engine_query_handle *rrddim_han
800
801
time_t page_start_time_s = pgc_page_start_time_s(handle->page);
802
time_t page_end_time_s = pgc_page_end_time_s(handle->page);
802
- time_t page_update_every_s = pgc_page_update_every_s(handle->page);
803
+ uint32_t page_update_every_s = pgc_page_update_every_s(handle->page);
804
805
unsigned position;
806
if(likely(handle->now_s >= page_start_time_s && handle->now_s <= page_end_time_s)) {
@@ -949,8 +950,7 @@ bool rrdeng_metric_retention_by_uuid(STORAGE_INSTANCE *db_instance, uuid_t *dim_
950
if (unlikely(!metric))
951
return false;
952
952
- time_t update_every_s;
953
- mrg_metric_get_retention(main_mrg, metric, first_entry_s, last_entry_s, &update_every_s);
953
+ mrg_metric_get_retention(main_mrg, metric, first_entry_s, last_entry_s, NULL);
954
955
mrg_metric_release(main_mrg, metric);
956