]> arthur.barton.de Git - netdata.git/commitdiff
avoid code duplication
authorCosta Tsaousis (ktsaou) <costa@tsaousis.gr>
Sat, 25 Feb 2017 11:49:33 +0000 (13:49 +0200)
committerCosta Tsaousis (ktsaou) <costa@tsaousis.gr>
Sat, 25 Feb 2017 11:49:33 +0000 (13:49 +0200)
src/rrdhost.c
src/rrdpush.c
src/rrdpush.h

index 658fba001290c3ab565740b4d024e06aa0ad3347..0b50731569556ddf0119bc35cdbb7ef10ffcd425 100644 (file)
@@ -396,10 +396,7 @@ void rrdhost_free(RRDHOST *host) {
     // ------------------------------------------------------------------------
     // free it
 
-    if(host->rrdpush_spawn) {
-        pthread_cancel(host->rrdpush_thread);
-        rrdpush_sender_thread_cleanup(host);
-    }
+    rrdpush_sender_thread_stop(host);
 
     freez(host->os);
     freez(host->cache_dir);
index 729544b5a3155c69edb6b3035b10fae9cfda6b3f..a283495555528aa6bbf0138d8f8f59843c67bf49 100644 (file)
@@ -206,7 +206,7 @@ static inline void rrdpush_sender_thread_unlock(RRDHOST *host) {
     rrdpush_unlock(host);
 }
 
-void rrdpush_sender_thread_cleanup(RRDHOST *host) {
+static void rrdpush_sender_thread_cleanup(RRDHOST *host) {
     rrdpush_lock(host);
 
     host->rrdpush_connected = 0;
@@ -235,6 +235,16 @@ void rrdpush_sender_thread_cleanup(RRDHOST *host) {
     rrdpush_unlock(host);
 }
 
+void rrdpush_sender_thread_stop(RRDHOST *host) {
+    rrdhost_check_wrlock(host);
+
+    if(host->rrdpush_spawn) {
+        info("STREAM %s [send]: stopping sending thread...", host->hostname);
+        pthread_cancel(host->rrdpush_thread);
+        rrdpush_sender_thread_cleanup(host);
+    }
+}
+
 void *rrdpush_sender_thread(void *ptr) {
     RRDHOST *host = (RRDHOST *)ptr;
 
@@ -554,10 +564,7 @@ int rrdpush_receive(int fd, const char *key, const char *hostname, const char *m
         if(health_enabled == CONFIG_BOOLEAN_AUTO)
             host->health_enabled = 0;
 
-        if(host->rrdpush_spawn) {
-            pthread_cancel(host->rrdpush_thread);
-            rrdpush_sender_thread_cleanup(host);
-        }
+        rrdpush_sender_thread_stop(host);
     }
     rrdhost_unlock(host);
 
index ef3545f8f4e2967243039457491ed4697113b25f..dddbe758b5c0cf66b2d519d8742712a3e1a35467 100644 (file)
@@ -10,6 +10,6 @@ extern void rrdset_done_push(RRDSET *st);
 extern void *rrdpush_sender_thread(void *ptr);
 
 extern int rrdpush_receiver_thread_spawn(RRDHOST *host, struct web_client *w, char *url);
-extern void rrdpush_sender_thread_cleanup(RRDHOST *host);
+extern void rrdpush_sender_thread_stop(RRDHOST *host);
 
 #endif //NETDATA_RRDPUSH_H