Code

rrdtool plugin: Wait for the ``queue thread'' to exit _after_ signaling it to exit..
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Fri, 12 Oct 2007 20:59:15 +0000 (22:59 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Fri, 12 Oct 2007 20:59:15 +0000 (22:59 +0200)
src/rrdtool.c

index 9fc687285cab7ae9894f3285d086a5f810d52b7f..ab031376cbdc9b1e265a42d0673ca1cf8ea5714f 100644 (file)
@@ -1051,6 +1051,11 @@ static int rrd_shutdown (void)
        rrd_cache_flush (-1);
        pthread_mutex_unlock (&cache_lock);
 
+       pthread_mutex_lock (&queue_lock);
+       do_shutdown = 1;
+       pthread_cond_signal (&queue_cond);
+       pthread_mutex_unlock (&queue_lock);
+
        /* Wait for all the values to be written to disk before returning. */
        if (queue_thread != 0)
        {
@@ -1059,11 +1064,6 @@ static int rrd_shutdown (void)
                DEBUG ("rrdtool plugin: queue_thread exited.");
        }
 
-       pthread_mutex_lock (&queue_lock);
-       do_shutdown = 1;
-       pthread_cond_signal (&queue_cond);
-       pthread_mutex_unlock (&queue_lock);
-
        return (0);
 } /* int rrd_shutdown */