X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=src%2Frrdpush.c;h=72e6d8a737bab8ca32688974b9ed34db1908af6e;hb=9dccc16d3763392f0b13349de18c3a838a667653;hp=2dcbe9f57f3af64f8276f5a1b2857a2ca177f1ae;hpb=f1eb5d44506899924e46047957abf91c217146a9;p=netdata.git diff --git a/src/rrdpush.c b/src/rrdpush.c index 2dcbe9f5..72e6d8a7 100644 --- a/src/rrdpush.c +++ b/src/rrdpush.c @@ -33,7 +33,7 @@ int rrdpush_init() { default_rrdpush_enabled = appconfig_get_boolean(&stream_config, CONFIG_SECTION_STREAM, "enabled", default_rrdpush_enabled); default_rrdpush_destination = appconfig_get(&stream_config, CONFIG_SECTION_STREAM, "destination", ""); default_rrdpush_api_key = appconfig_get(&stream_config, CONFIG_SECTION_STREAM, "api key", ""); - rrdhost_free_orphan_time = appconfig_get_number(&stream_config, CONFIG_SECTION_STREAM, "free orphan hosts after seconds", rrdhost_free_orphan_time); + rrdhost_free_orphan_time = config_get_number(CONFIG_SECTION_GLOBAL, "cleanup orphan hosts after seconds", rrdhost_free_orphan_time); if(default_rrdpush_enabled && (!default_rrdpush_destination || !*default_rrdpush_destination || !default_rrdpush_api_key || !*default_rrdpush_api_key)) { error("STREAM [send]: cannot enable sending thread - information is missing."); @@ -59,8 +59,8 @@ int rrdpush_init() { // this is for the first iterations of each chart static unsigned int remote_clock_resync_iterations = 60; -#define rrdpush_lock(host) pthread_mutex_lock(&((host)->rrdpush_mutex)) -#define rrdpush_unlock(host) pthread_mutex_unlock(&((host)->rrdpush_mutex)) +#define rrdpush_lock(host) netdata_mutex_lock(&((host)->rrdpush_mutex)) +#define rrdpush_unlock(host) netdata_mutex_unlock(&((host)->rrdpush_mutex)) // checks if the current chart definition has been sent static inline int need_to_send_chart_definition(RRDSET *st) { @@ -219,6 +219,8 @@ static void rrdpush_sender_thread_cleanup_locked_all(RRDHOST *host) { host->rrdpush_buffer = NULL; host->rrdpush_spawn = 0; + + rrdhost_flag_set(host, RRDHOST_ORPHAN); } void rrdpush_sender_thread_stop(RRDHOST *host) { @@ -453,7 +455,7 @@ cleanup: if(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) != 0) error("STREAM %s [send]: cannot set pthread cancel state to ENABLE.", host->hostname); - + pthread_exit(NULL); return NULL; } @@ -520,7 +522,7 @@ int rrdpush_receive(int fd, const char *key, const char *hostname, const char *m } #ifdef NETDATA_INTERNAL_CHECKS - info("STREAM %s [receive from [%s]:%s]: client willing to stream metrics for host '%s' with machine_guid '%s': update every = %d, history = %d, memory mode = %s, health %s" + info("STREAM %s [receive from [%s]:%s]: client willing to stream metrics for host '%s' with machine_guid '%s': update every = %d, history = %ld, memory mode = %s, health %s" , hostname , client_ip , client_port @@ -581,12 +583,11 @@ int rrdpush_receive(int fd, const char *key, const char *hostname, const char *m error("STREAM %s [receive from [%s]:%s]: disconnected (completed updates %zu).", host->hostname, client_ip, client_port, count); rrdhost_wrlock(host); + host->senders_disconnected_time = now_realtime_sec(); host->connected_senders--; if(!host->connected_senders) { if(health_enabled == CONFIG_BOOLEAN_AUTO) host->health_enabled = 0; - - host->senders_disconnected_time = now_realtime_sec(); } rrdhost_unlock(host); @@ -645,6 +646,7 @@ void rrdpush_sender_thread_spawn(RRDHOST *host) { else if(pthread_detach(host->rrdpush_thread)) error("STREAM %s [send]: cannot request detach newly created thread.", host->hostname); + rrdhost_flag_clear(host, RRDHOST_ORPHAN); host->rrdpush_spawn = 1; }