Cid 379238 379238 (#13328)
* Make sure CTXP is valid * Check for availability of storage engine. If we cant get an engine we cant build an RD
Stelios Fragkakis committed
Jul 7, 2022 at 11:46 UTC
2030b890a2007489f4f3c2471fe58402d19a57bf
2 files changed
+9
-2
database/engine/rrdengineapi.c
+2
-1
@@ -877,7 +877,8 @@ error_after_init_rrd_files:
877
free_page_cache(ctx);
878
if (!is_storage_engine_shared((STORAGE_INSTANCE *)ctx)) {
879
freez(ctx);
880
- *ctxp = NULL;
880
+ if (ctxp)
881
+ *ctxp = NULL;
882
}
883
rrd_stat_atomic_add(&rrdeng_reserved_file_descriptors, -RRDENG_FD_BUDGET_PER_INSTANCE);
884
return UV_EIO;
database/sqlite/sqlite_functions.c
+7
-1
@@ -1584,12 +1584,16 @@ int find_dimension_first_last_t(char *machine_guid, char *chart_id, char *dim_id
1584
#ifdef ENABLE_DBENGINE
1585
static RRDDIM *create_rrdim_entry(ONEWAYALLOC *owa, RRDSET *st, char *id, char *name, uuid_t *metric_uuid)
1586
{
1587
+ STORAGE_ENGINE *eng = storage_engine_get(RRD_MEMORY_MODE_DBENGINE);
1588
+
1589
+ if (unlikely(!eng))
1590
+ return NULL;
1591
+
1592
RRDDIM *rd = onewayalloc_callocz(owa, 1, sizeof(*rd));
1593
rd->rrdset = st;
1594
rd->update_every = st->update_every;
1595
rd->last_stored_value = NAN;
1596
rrddim_flag_set(rd, RRDDIM_FLAG_NONE);
1592
- STORAGE_ENGINE *eng = storage_engine_get(RRD_MEMORY_MODE_DBENGINE);
1597
1598
uuid_copy(rd->metric_uuid, *metric_uuid);
1599
rd->id = onewayalloc_strdupz(owa, id);
@@ -1714,6 +1718,8 @@ void sql_build_context_param_list(ONEWAYALLOC *owa, struct context_param **para
1718
st->last_entry_t = MAX(st->last_entry_t, (*param_list)->last_entry_t);
1719
1720
RRDDIM *rd = create_rrdim_entry(owa, st, (char *)sqlite3_column_text(res, 1), (char *)sqlite3_column_text(res, 2), &rrdeng_uuid);
1721
+ if (unlikely(!rd))
1722
+ continue;
1723
if (sqlite3_column_int(res, 9) == 1)
1724
rrddim_flag_set(rd, RRDDIM_FLAG_HIDDEN);
1725
rd->next = (*param_list)->rd;