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);