From d9607cd79bbe69ba8224cd56134e0e8f6fe8d51a Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Mon, 5 Jan 2015 16:43:08 -0500 Subject: [PATCH] Fix: exit threads not only on goto restart MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Exit threads as soon as number of FD is 0, on every loop (no need for goto restart special case). Number of FD being 0 is a sufficient condition for exiting the thread: it means the quit pipe has been removed from the poll set. Signed-off-by: Mathieu Desnoyers Signed-off-by: Jérémie Galarneau --- src/common/consumer.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/src/common/consumer.c b/src/common/consumer.c index c741a1b8e..5495327ab 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -2181,14 +2181,6 @@ void *consumer_thread_metadata_poll(void *data) DBG("Metadata main loop started"); while (1) { - health_code_update(); - - /* Only the metadata pipe is set */ - if (LTTNG_POLL_GETNB(&events) == 0 && consumer_quit == 1) { - err = 0; /* All is OK */ - goto end; - } - restart: health_code_update(); health_poll_entry(); @@ -2203,7 +2195,10 @@ restart: ERR("Poll EINTR catched"); goto restart; } - goto error; + if (LTTNG_POLL_GETNB(&events) == 0) { + err = 0; /* All is OK */ + } + goto end; } nb_fd = ret; @@ -2759,14 +2754,6 @@ void *consumer_thread_channel_poll(void *data) DBG("Channel main loop started"); while (1) { - health_code_update(); - - /* Only the channel pipe is set */ - if (LTTNG_POLL_GETNB(&events) == 0 && consumer_quit == 1) { - err = 0; /* All is OK */ - goto end; - } - restart: health_code_update(); DBG("Channel poll wait"); @@ -2781,6 +2768,9 @@ restart: ERR("Poll EINTR catched"); goto restart; } + if (LTTNG_POLL_GETNB(&events) == 0) { + err = 0; /* All is OK */ + } goto end; } -- 2.34.1