summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimo <timotej@netdata.cloud>2020-01-09 18:51:46 +0200
committerGitHub <noreply@github.com>2020-01-09 18:51:46 +0200
commit2c0f57151e09b6eda008181912fb891e0a471544 (patch)
treec846365b5add63daee8a51acd12bfea9ca1a5666
parent791e7e713db07d37f7eca844dad8369ac92dc5ee (diff)
error exit when rrdhost localhost init fails #7504 (#7663)
* error exit when rrdhost localhost init fails #7504
-rw-r--r--daemon/main.c8
-rw-r--r--database/rrd.h2
-rw-r--r--database/rrdhost.c3
3 files changed, 9 insertions, 4 deletions
diff --git a/daemon/main.c b/daemon/main.c
index 1dcdb6edd2..9eb424c535 100644
--- a/daemon/main.c
+++ b/daemon/main.c
@@ -941,7 +941,10 @@ int main(int argc, char **argv) {
default_rrd_update_every = 1;
default_rrd_memory_mode = RRD_MEMORY_MODE_RAM;
default_health_enabled = 0;
- rrd_init("unittest", NULL);
+ if(rrd_init("unittest", NULL)) {
+ fprintf(stderr, "rrd_init failed for unittest\n");
+ return 1;
+ }
default_rrdpush_enabled = 0;
if(run_all_mockup_tests()) return 1;
if(unit_test_storage()) return 1;
@@ -1277,7 +1280,8 @@ int main(int argc, char **argv) {
struct rrdhost_system_info *system_info = calloc(1, sizeof(struct rrdhost_system_info));
get_system_info(system_info);
- rrd_init(netdata_configured_hostname, system_info);
+ if(rrd_init(netdata_configured_hostname, system_info))
+ fatal("Cannot initialize localhost instance with name '%s'.", netdata_configured_hostname);
// ------------------------------------------------------------------------
// Claim netdata agent to a cloud endpoint
diff --git a/database/rrd.h b/database/rrd.h
index 432341d75d..0702fc1710 100644
--- a/database/rrd.h
+++ b/database/rrd.h
@@ -800,7 +800,7 @@ extern netdata_rwlock_t rrd_rwlock;
extern size_t rrd_hosts_available;
extern time_t rrdhost_free_orphan_time;
-extern void rrd_init(char *hostname, struct rrdhost_system_info *system_info);
+extern int rrd_init(char *hostname, struct rrdhost_system_info *system_info);
extern RRDHOST *rrdhost_find_by_hostname(const char *hostname, uint32_t hash);
extern RRDHOST *rrdhost_find_by_guid(const char *guid, uint32_t hash);
diff --git a/database/rrdhost.c b/database/rrdhost.c
index 150596671f..df4e364d9b 100644
--- a/database/rrdhost.c
+++ b/database/rrdhost.c
@@ -483,7 +483,7 @@ restart_after_removal:
// ----------------------------------------------------------------------------
// RRDHOST global / startup initialization
-void rrd_init(char *hostname, struct rrdhost_system_info *system_info) {
+int rrd_init(char *hostname, struct rrdhost_system_info *system_info) {
rrdset_free_obsolete_time = config_get_number(CONFIG_SECTION_GLOBAL, "cleanup obsolete charts after seconds", rrdset_free_obsolete_time);
gap_when_lost_iterations_above = (int)config_get_number(CONFIG_SECTION_GLOBAL, "gap when lost iterations above", gap_when_lost_iterations_above);
if (gap_when_lost_iterations_above < 1)
@@ -517,6 +517,7 @@ void rrd_init(char *hostname, struct rrdhost_system_info *system_info) {
);
rrd_unlock();
web_client_api_v1_management_init();
+ return localhost==NULL;
}
// ----------------------------------------------------------------------------