From 328dee38c16dd9eae7118531d610780511d5556f Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Sun, 4 Jan 2015 21:25:08 -0500 Subject: [PATCH] Fix: data pending: allow empty streams MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit There are cases where a stream can be completely empty (no packet to write) with UST: for instance, if a traced application is either preempted for a long time, terminated, or stopped, between reserve and commit. This will make the consumer consider that this stream has no data ready. If this situation occurs in the first sub-buffer of a stream, this stream will have no data at all (0 bytes). Therefore, we need to let the data pending check consider that no data is pending in this situation, otherwise it can make the data pending check always return that there is data pending. Signed-off-by: Mathieu Desnoyers Signed-off-by: Jérémie Galarneau --- src/common/consumer.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/common/consumer.c b/src/common/consumer.c index f2662cdda..d192d7a51 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -3548,15 +3548,6 @@ int consumer_data_pending(uint64_t id) */ ret = cds_lfht_is_node_deleted(&stream->node.node); if (!ret) { - /* - * An empty output file is not valid. We need at least one packet - * generated per stream, even if it contains no event, so it - * contains at least one packet header. - */ - if (stream->output_written == 0) { - pthread_mutex_unlock(&stream->lock); - goto data_pending; - } /* Check the stream if there is data in the buffers. */ ret = data_pending(stream); if (ret == 1) { -- 2.34.1