+ &viewer_session_chunk_id);
+ LTTNG_ASSERT(status == LTTNG_TRACE_CHUNK_STATUS_OK);
+ }
+
+ viewer_stream_and_session_in_same_chunk = lttng_trace_chunk_ids_equal(
+ conn->viewer_session->current_trace_chunk,
+ vstream->stream_file.trace_chunk);
+ viewer_stream_one_rotation_behind = rstream->completed_rotation_count ==
+ vstream->last_seen_rotation_count + 1;
+
+ if (viewer_stream_and_session_in_same_chunk) {
+ DBG("Transition to latest chunk check (%s -> %s): Same chunk, no need to rotate",
+ vstream->stream_file.trace_chunk ?
+ std::to_string(stream_file_chunk_id).c_str() :
+ "None",
+ conn->viewer_session->current_trace_chunk ?
+ std::to_string(viewer_session_chunk_id).c_str() :
+ "None");
+ } else if (viewer_stream_one_rotation_behind && !rstream->trace_chunk) {
+ DBG("Transition to latest chunk check (%s -> %s): One chunk behind relay stream which is being destroyed, no need to rotate",
+ vstream->stream_file.trace_chunk ?
+ std::to_string(stream_file_chunk_id).c_str() :
+ "None",
+ conn->viewer_session->current_trace_chunk ?
+ std::to_string(viewer_session_chunk_id).c_str() :
+ "None");
+ } else {
+ DBG("Transition to latest chunk check (%s -> %s): Viewer stream chunk ID and viewer session chunk ID differ, rotating viewer stream",
+ vstream->stream_file.trace_chunk ?
+ std::to_string(stream_file_chunk_id).c_str() :
+ "None",
+ conn->viewer_session->current_trace_chunk ?
+ std::to_string(viewer_session_chunk_id).c_str() :
+ "None");
+