From: Jérémie Galarneau Date: Tue, 3 Apr 2018 14:14:17 +0000 (-0400) Subject: Fix: rotation state marked as completed before relayd has completed X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=commitdiff_plain;h=0e9a3855dc56ee60cfcac93ab2e51fbb6916687d Fix: rotation state marked as completed before relayd has completed The session rotation state is updated to COMPLETED before the relay daemon has signaled that its rotation has been completed. This causes users using the "rotation get_info" API to receive this status before the session archive is readable on the relay daemon's end. Signed-off-by: Jérémie Galarneau --- diff --git a/src/bin/lttng-sessiond/rotation-thread.c b/src/bin/lttng-sessiond/rotation-thread.c index 9f15ed06e..b0869903e 100644 --- a/src/bin/lttng-sessiond/rotation-thread.c +++ b/src/bin/lttng-sessiond/rotation-thread.c @@ -395,7 +395,6 @@ int handle_channel_rotation_pipe(int fd, uint32_t revents, goto end_unlock_session; } session->rotate_pending = false; - session->rotation_state = LTTNG_ROTATION_STATE_COMPLETED; session->last_chunk_start_ts = session->current_chunk_start_ts; if (session->rotate_pending_relay) { ret = sessiond_timer_rotate_pending_start( @@ -406,6 +405,8 @@ int handle_channel_rotation_pipe(int fd, uint32_t revents, ret = -1; goto end_unlock_session; } + } else { + session->rotation_state = LTTNG_ROTATION_STATE_COMPLETED; } DBG("Rotation completed for session %s", session->name); } @@ -445,6 +446,7 @@ int rotate_pending_relay_timer(struct ltt_session *session) * rotations can start now. */ session->rotate_pending_relay = false; + session->rotation_state = LTTNG_ROTATION_STATE_COMPLETED; } else if (ret == 1) { DBG("[rotation-thread] Rotation still pending on the relay for " "session %" PRIu64, session->id);