X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Frotation-thread.c;h=24ab0c8033fd715c829f036c67a2c3e891923c5d;hp=2fed39fc75a5051fb1b72d006ac95db528075ad8;hb=8aca663cd2a1cc1680b18a349f7d8b9bef8ef490;hpb=50eba12b374614643f2e16f5c1f07622d3c4e4ac diff --git a/src/bin/lttng-sessiond/rotation-thread.c b/src/bin/lttng-sessiond/rotation-thread.c index 2fed39fc7..24ab0c803 100644 --- a/src/bin/lttng-sessiond/rotation-thread.c +++ b/src/bin/lttng-sessiond/rotation-thread.c @@ -261,8 +261,11 @@ error: static void fini_thread_state(struct rotation_thread_state *state) { + int ret; + lttng_poll_clean(&state->events); - cds_lfht_destroy(channel_pending_rotate_ht, NULL); + ret = cds_lfht_destroy(channel_pending_rotate_ht, NULL); + assert(!ret); if (rotate_notification_channel) { lttng_notification_channel_destroy(rotate_notification_channel); } @@ -433,7 +436,7 @@ int rotate_pending_relay_timer(struct ltt_session *session) DBG("[rotation-thread] Check rotate pending on session %" PRIu64, session->id); - ret = relay_rotate_pending(session, session->rotate_count - 1); + ret = relay_rotate_pending(session, session->current_archive_id - 1); if (ret < 0) { ERR("[rotation-thread] Check relay rotate pending"); goto end; @@ -682,11 +685,25 @@ int handle_notification_channel(int fd, uint32_t revents, struct rotation_thread_state *state) { int ret; - struct lttng_notification *notification; + bool notification_pending; + struct lttng_notification *notification = NULL; enum lttng_notification_channel_status status; const struct lttng_evaluation *notification_evaluation; const struct lttng_condition *notification_condition; + status = lttng_notification_channel_has_pending_notification( + rotate_notification_channel, ¬ification_pending); + if (status != LTTNG_NOTIFICATION_CHANNEL_STATUS_OK) { + ERR("[rotation-thread ]Error occured while checking for pending notification"); + ret = -1; + goto end; + } + + if (!notification_pending) { + ret = 0; + goto end; + } + /* Receive the next notification. */ status = lttng_notification_channel_get_next_notification( rotate_notification_channel, @@ -718,11 +735,6 @@ int handle_notification_channel(int fd, uint32_t revents, end: lttng_notification_destroy(notification); - if (ret != 0) { - goto end; - } - - return ret; }