- if (sessiond_check_thread_quit_pipe(fd, revents)) {
- DBG("[rotation-thread] Quit pipe activity");
- /* TODO flush the queue. */
- goto exit;
- } else if (fd == lttng_pipe_get_readfd(handle->rotation_timer_queue->event_pipe)) {
+ if (fd == rotate_notification_channel->socket) {
+ ret = handle_notification_channel(fd, handle,
+ &thread);
+ if (ret) {
+ ERR("[rotation-thread] Error occurred while handling activity on notification channel socket");
+ goto error;
+ }
+ } else {
+ /* Job queue or quit pipe activity. */
+ if (fd == lttng_pipe_get_readfd(
+ handle->rotation_timer_queue->event_pipe)) {
+ char buf;
+
+ ret = lttng_read(fd, &buf, 1);
+ if (ret != 1) {
+ ERR("[rotation-thread] Failed to read from wakeup pipe (fd = %i)", fd);
+ ret = -1;
+ goto error;
+ }
+ }
+
+ /*
+ * The job queue is serviced if there is
+ * activity on the quit pipe to ensure it is
+ * flushed and all references held in the queue
+ * are released.
+ */