X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Flive.c;h=53cc660918d463aacae382c6a2c858281925f26d;hp=c312e78e976e89bb6949e0aee54cf48e2bdca99c;hb=efe12cccde8949059bf0e91cb0e63a3dd2c21949;hpb=157df58664846e22bdeea84dfcf717cb43360b3f diff --git a/src/bin/lttng-relayd/live.c b/src/bin/lttng-relayd/live.c index c312e78e9..53cc66091 100644 --- a/src/bin/lttng-relayd/live.c +++ b/src/bin/lttng-relayd/live.c @@ -854,7 +854,8 @@ static int viewer_attach_session(struct relay_command *cmd, struct lttng_ht *sessions_ht) { - int ret, send_streams = 0, nb_streams = 0; + int ret, send_streams = 0; + uint32_t nb_streams = 0, nb_streams_ready = 0; struct lttng_viewer_attach_session_request request; struct lttng_viewer_attach_session_response response; struct lttng_viewer_stream send_stream; @@ -961,14 +962,16 @@ int viewer_attach_session(struct relay_command *cmd, if (stream->session != cmd->session) { continue; } + nb_streams++; /* - * Don't send streams with no ctf_trace, they are not ready to be - * read. + * Don't send streams with no ctf_trace, they are not + * ready to be read. */ - if (!stream->ctf_trace) { + if (!stream->ctf_trace || !stream->viewer_ready) { continue; } + nb_streams_ready++; vstream = live_find_viewer_stream_by_id(stream->stream_handle); if (!vstream) { @@ -977,7 +980,11 @@ int viewer_attach_session(struct relay_command *cmd, goto end_unlock; } } - nb_streams++; + } + + /* We must have the same amount of existing stream and ready stream. */ + if (nb_streams != nb_streams_ready) { + nb_streams = 0; } response.streams_count = htobe32(nb_streams); } @@ -1113,7 +1120,7 @@ void destroy_viewer_stream(struct relay_viewer_stream *vstream) * we need to remove it because we won't detect a EOF for this * stream. */ - if (ret_ref == 1 && vstream->ctf_trace->metadata_stream) { + if (ret_ref == 1 && vstream->ctf_trace->viewer_metadata_stream) { destroy_viewer_stream(vstream->ctf_trace->viewer_metadata_stream); vstream->ctf_trace->metadata_stream = NULL; DBG("Freeing ctf_trace %" PRIu64, vstream->ctf_trace->id);