X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer-timer.c;h=65c9fd3c285bb9803b3110663b0dd107c9ef0d04;hb=05fe4783b5689c239d1ddb09df44192948d7e395;hp=b867a35bf0d6e9d44da62698fa366f7e06bd2d70;hpb=ede905e6eaae860f598ff852ce1aa5bf3a78f679;p=lttng-tools.git diff --git a/src/common/consumer-timer.c b/src/common/consumer-timer.c index b867a35bf..65c9fd3c2 100644 --- a/src/common/consumer-timer.c +++ b/src/common/consumer-timer.c @@ -113,12 +113,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) { @@ -131,7 +133,7 @@ error: static int check_kernel_stream(struct lttng_consumer_stream *stream) { - uint64_t ts; + uint64_t ts, stream_id; int ret; /* @@ -154,13 +156,18 @@ static int check_kernel_stream(struct lttng_consumer_stream *stream) } ret = kernctl_snapshot(stream->wait_fd); if (ret < 0) { - if (errno != EAGAIN) { - ERR("Taking kernel snapshot"); + if (errno != EAGAIN && errno != ENODATA) { + PERROR("live timer kernel snapshot"); 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; } @@ -174,7 +181,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); @@ -205,8 +212,13 @@ static int check_ust_stream(struct lttng_consumer_stream *stream) ret = -1; goto error_unlock; } + ret = lttng_ustconsumer_get_stream_id(stream, &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; }