Fix: consumer should await for initial streams
[lttng-tools.git] / src / common / ust-consumer / ust-consumer.c
index e7d6dd4e780084879759055fe839e018f6d02048..ad4b014c6f08dc09f4e47b22e19cbd47330ec5ae 100644 (file)
@@ -150,7 +150,8 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                new_channel = consumer_allocate_channel(msg.u.channel.channel_key,
                                fds[0], -1,
                                msg.u.channel.mmap_len,
-                               msg.u.channel.max_sb_size);
+                               msg.u.channel.max_sb_size,
+                               msg.u.channel.nb_init_streams);
                if (new_channel == NULL) {
                        lttng_consumer_send_error(ctx, LTTCOMM_CONSUMERD_OUTFD_ERROR);
                        goto end_nosignal;
@@ -452,12 +453,20 @@ int lttng_ustconsumer_read_subbuffer(struct lttng_consumer_stream *stream,
        padding = len - subbuf_size;
        /* write the subbuffer to the tracefile */
        ret = lttng_consumer_on_read_subbuffer_mmap(ctx, stream, subbuf_size, padding);
-       if (ret != subbuf_size) {
+       /*
+        * The mmap operation should write subbuf_size amount of data when network
+        * streaming or the full padding (len) size when we are _not_ streaming.
+        */
+       if ((ret != subbuf_size && stream->net_seq_idx != -1) ||
+                       (ret != len && stream->net_seq_idx == -1)) {
                /*
-                * display the error but continue processing to try
-                * to release the subbuffer
+                * Display the error but continue processing to try to release the
+                * subbuffer
                 */
-               ERR("Error writing to tracefile (expected: %ld, got: %ld)", ret, len);
+               ERR("Error writing to tracefile "
+                               "(ret: %zd != len: %lu != subbuf_size: %lu)",
+                               ret, len, subbuf_size);
+
        }
        err = ustctl_put_next_subbuf(handle, buf);
        assert(err == 0);
This page took 0.027067 seconds and 4 git commands to generate.