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(
ret = -1;
goto end_unlock_session;
}
+ } else {
+ session->rotation_state = LTTNG_ROTATION_STATE_COMPLETED;
}
DBG("Rotation completed for session %s", session->name);
}
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;
* 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);
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,
end:
lttng_notification_destroy(notification);
- if (ret != 0) {
- goto end;
- }
-
-
return ret;
}
ret = handle_channel_rotation_pipe(fd,
revents, handle, &state);
if (ret) {
- ERR("[rotation-thread] Handle channel rotation pipe");
+ ERR("[rotation-thread] Failed to handle channel rotation pipe");
goto error;
}
} else if (fd == rotate_notification_channel->socket) {