@cryptotaxi247 / netdata-1 / commits / 86e73a216

Acquire and release metric as needed during journal v2 migration (#21200)

Stelios Fragkakis committed Oct 24, 2025 at 17:49 UTC 86e73a2166e67f2840a5ee28fb3bcf58615ba688
2 files changed +10 -4
src/database/engine/cache.c
+8 -3
@@ -2477,6 +2477,8 @@ void pgc_open_cache_to_journal_v2(
2477 continue;
2478 }
2479
2480 + METRIC *metric = mrg_metric_dup(main_mrg, (METRIC *)page->metric_id);
2481 +
2482 page_flag_set(page, PGC_PAGE_IS_BEING_MIGRATED_TO_V2);
2483
2484 pgc_queue_unlock(cache, &cache->hot);
@@ -2516,8 +2518,9 @@ void pgc_open_cache_to_journal_v2(
2518
2519 struct jv2_metrics_info *mi;
2520 if(!*PValue) {
2519 - mi = aral_mallocz(ar_mi); // callocz(1, sizeof(struct jv2_metrics_info));
2520 - mi->uuid = mrg_metric_uuid(main_mrg, (METRIC *)page->metric_id);
2521 + mi = aral_mallocz(ar_mi);
2522 + mi->metric = metric;
2523 + mi->uuid = mrg_metric_uuid(main_mrg, metric);
2524 mi->first_time_s = page->start_time_s;
2525 mi->last_time_s = page->end_time_s;
2526 mi->number_of_pages = 1;
@@ -2530,6 +2533,7 @@ void pgc_open_cache_to_journal_v2(
2533 else {
2534 mi = *PValue;
2535 mi->number_of_pages++;
2536 + mrg_metric_release(main_mrg, metric);
2537 if(page->start_time_s < mi->first_time_s)
2538 mi->first_time_s = page->start_time_s;
2539 if(page->end_time_s > mi->last_time_s)
@@ -2542,7 +2546,7 @@ void pgc_open_cache_to_journal_v2(
2546 (long)page->start_time_s, mi->JudyL_pages_by_start_time, PValue);
2547
2548 if(!*PValue) {
2545 - struct jv2_page_info *pi = aral_mallocz(ar_pi); // callocz(1, (sizeof(struct jv2_page_info)));
2549 + struct jv2_page_info *pi = aral_mallocz(ar_pi);
2550 pi->start_time_s = page->start_time_s;
2551 pi->end_time_s = page->end_time_s;
2552 pi->update_every_s = page->update_every_s;
@@ -2605,6 +2609,7 @@ void pgc_open_cache_to_journal_v2(
2609 }
2610
2611 JudyLFreeArray(&mi->JudyL_pages_by_start_time, PJE0);
2612 + mrg_metric_release(main_mrg, mi->metric);
2613 aral_freez(ar_mi, mi);
2614 }
2615 JudyLFreeArray(&JudyL_metrics, PJE0);
src/database/engine/rrdengine.h
+2 -1
@@ -171,10 +171,11 @@ struct jv2_extents_info {
171
172 struct jv2_metrics_info {
173 nd_uuid_t *uuid;
174 + void *metric;
175 uint32_t page_list_header;
176 + uint32_t number_of_pages;
177 time_t first_time_s;
178 time_t last_time_s;
177 - size_t number_of_pages;
179 Pvoid_t JudyL_pages_by_start_time;
180 };
181