@cryptotaxi247 / netdata-1 / commits / 2030b890a

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;