[lttng-dev] [BABELTRACE PATCH 3/3] Handle empty streams on iterator init

Julien Desfossez jdesfossez at efficios.com
Wed Nov 27 11:40:12 EST 2013


In live trace streaming, we can create an iterator with inactive
streams. This patch allows inactive streams to be considered as valid.

Signed-off-by: Julien Desfossez <jdesfossez at efficios.com>
---
 lib/iterator.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/iterator.c b/lib/iterator.c
index 155fcbe..3280f4a 100644
--- a/lib/iterator.c
+++ b/lib/iterator.c
@@ -725,7 +725,7 @@ int bt_iter_init(struct bt_iter *iter,
 				if (ret == EOF) {
 					ret = 0;
 					continue;
-				} else if (ret) {
+				} else if (ret != 0 && ret != EAGAIN) {
 					goto error;
 				}
 				/* Add to heap */
@@ -821,6 +821,13 @@ reinsert:
 	removed = bt_heap_replace_max(iter->stream_heap, file_stream);
 	assert(removed == file_stream);
 
+	file_stream = bt_heap_maximum(iter->stream_heap);
+	if (file_stream->pos.content_size == 0) {
+		ret = EAGAIN;
+	} else {
+		ret = 0;
+	}
+
 end:
 	return ret;
 }
-- 
1.8.3.2




More information about the lttng-dev mailing list