Fix: get the stream_id when generating live beacons
[lttng-tools.git] / src / common / consumer-timer.c
index c659bf63333a0de56fc568f99c167fb55e12e24c..d36e2bccfdd08cb304d2d362403325db85c4c3af 100644 (file)
@@ -27,6 +27,7 @@
 #include <common/kernel-ctl/kernel-ctl.h>
 #include <common/kernel-consumer/kernel-consumer.h>
 #include <common/consumer-stream.h>
+#include <lttng/ust-ctl.h>
 
 #include "consumer-timer.h"
 #include "consumer-testpoint.h"
@@ -114,12 +115,14 @@ static void metadata_switch_timer(struct lttng_consumer_local_data *ctx,
        }
 }
 
-static int send_empty_index(struct lttng_consumer_stream *stream, uint64_t ts)
+static int send_empty_index(struct lttng_consumer_stream *stream, uint64_t ts,
+               uint64_t stream_id)
 {
        int ret;
        struct ctf_packet_index index;
 
        memset(&index, 0, sizeof(index));
+       index.stream_id = htobe64(stream_id);
        index.timestamp_end = htobe64(ts);
        ret = consumer_stream_write_index(stream, &index);
        if (ret < 0) {
@@ -132,7 +135,7 @@ error:
 
 static int check_kernel_stream(struct lttng_consumer_stream *stream)
 {
-       uint64_t ts;
+       uint64_t ts, stream_id;
        int ret;
 
        /*
@@ -160,8 +163,13 @@ static int check_kernel_stream(struct lttng_consumer_stream *stream)
                        ret = -1;
                        goto error_unlock;
                }
+               ret = kernctl_get_stream_id(stream->wait_fd, &stream_id);
+               if (ret < 0) {
+                       PERROR("kernctl_get_stream_id");
+                       goto error_unlock;
+               }
                DBG("Stream %" PRIu64 " empty, sending beacon", stream->key);
-               ret = send_empty_index(stream, ts);
+               ret = send_empty_index(stream, ts, stream_id);
                if (ret < 0) {
                        goto error_unlock;
                }
@@ -175,7 +183,7 @@ error_unlock:
 
 static int check_ust_stream(struct lttng_consumer_stream *stream)
 {
-       uint64_t ts;
+       uint64_t ts, stream_id;
        int ret;
 
        assert(stream);
@@ -206,8 +214,13 @@ static int check_ust_stream(struct lttng_consumer_stream *stream)
                        ret = -1;
                        goto error_unlock;
                }
+               ret = ustctl_get_stream_id(stream->ustream, &stream_id);
+               if (ret < 0) {
+                       PERROR("ustctl_get_stream_id");
+                       goto error_unlock;
+               }
                DBG("Stream %" PRIu64 " empty, sending beacon", stream->key);
-               ret = send_empty_index(stream, ts);
+               ret = send_empty_index(stream, ts, stream_id);
                if (ret < 0) {
                        goto error_unlock;
                }
This page took 0.025297 seconds and 4 git commands to generate.