@cryptotaxi247 / netdata-1 / commits / 154cf9263

Additional checks during initial context load (#21298)

* Additional checks during initial context load * Update src/database/contexts/rrdcontext-loading.c Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update src/database/contexts/rrdcontext-loading.c Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> --------- Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

Stelios Fragkakis committed Nov 18, 2025 at 08:49 UTC 154cf9263dadc75ef842fb35c32a9cc208970102
1 file changed +38
src/database/contexts/rrdcontext-loading.c
+38
@@ -32,6 +32,12 @@ static void rrdinstance_load_dimension_callback(SQL_DIMENSION_DATA *sd, void *da
32 return;
33 }
34 RRDCONTEXT *rc = rrdcontext_acquired_value(rca);
35 + if(!rc) {
36 + th_ignored_metrics++;
37 + dictionary_acquired_item_release(host->rrdctx.contexts, (DICTIONARY_ITEM *)rca);
38 + uuidmap_free(id);
39 + return;
40 + }
41
42 RRDINSTANCE_ACQUIRED *ria = (RRDINSTANCE_ACQUIRED *)dictionary_get_and_acquire_item(rc->rrdinstances, sd->chart_id);
43 if(!ria) {
@@ -41,6 +47,13 @@ static void rrdinstance_load_dimension_callback(SQL_DIMENSION_DATA *sd, void *da
47 return;
48 }
49 RRDINSTANCE *ri = rrdinstance_acquired_value(ria);
50 + if(!ri) {
51 + th_ignored_metrics++;
52 + dictionary_acquired_item_release(rc->rrdinstances, (DICTIONARY_ITEM *)ria);
53 + rrdcontext_release(rca);
54 + uuidmap_free(id);
55 + return;
56 + }
57
58 RRDMETRIC trm = {
59 .uuid = id,
@@ -71,7 +84,21 @@ static void rrdinstance_load_instance_callback(SQL_CHART_DATA *sc, void *data) {
84 };
85
86 RRDCONTEXT_ACQUIRED *rca = (RRDCONTEXT_ACQUIRED *)dictionary_set_and_acquire_item(host->rrdctx.contexts, string2str(tc.id), &tc, sizeof(tc));
87 + if(!rca) {
88 + th_ignored_instances++;
89 + string_freez(tc.id);
90 + string_freez(tc.title);
91 + string_freez(tc.units);
92 + string_freez(tc.family);
93 + return;
94 + }
95 +
96 RRDCONTEXT *rc = rrdcontext_acquired_value(rca);
97 + if(!rc) {
98 + th_ignored_instances++;
99 + rrdcontext_release(rca);
100 + return;
101 + }
102
103 RRDINSTANCE tri = {
104 .uuid = uuidmap_create(sc->chart_id),
@@ -87,6 +114,17 @@ static void rrdinstance_load_instance_callback(SQL_CHART_DATA *sc, void *data) {
114 };
115
116 RRDINSTANCE_ACQUIRED *ria = (RRDINSTANCE_ACQUIRED *)dictionary_set_and_acquire_item(rc->rrdinstances, sc->id, &tri, sizeof(tri));
117 + if(!ria) {
118 + th_ignored_instances++;
119 + uuidmap_free(tri.uuid);
120 + string_freez(tri.id);
121 + string_freez(tri.name);
122 + string_freez(tri.title);
123 + string_freez(tri.units);
124 + string_freez(tri.family);
125 + rrdcontext_release(rca);
126 + return;
127 + }
128
129 rrdinstance_release(ria);
130 rrdcontext_release(rca);