X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=lib%2Fiterator.c;fp=lib%2Fiterator.c;h=853898d33e995e7004c177bff0d5782272c9898c;hp=a2a7bb578adca29313b9bda620382bfe67b8248c;hb=500634bebf68d5a018f2d9c36a104b8706f59818;hpb=e67a221d91eb0cc4627e37c4e0d7cfb7506200d6 diff --git a/lib/iterator.c b/lib/iterator.c index a2a7bb57..853898d3 100644 --- a/lib/iterator.c +++ b/lib/iterator.c @@ -806,9 +806,18 @@ int bt_iter_next(struct bt_iter *iter) goto end; } else if (ret == EAGAIN) { /* - * The stream is inactive for now, we just updated the timestamp_end - * to skip over this stream up to a certain point in time. + * Live streaming: the stream is inactive for now, we + * just updated the timestamp_end to skip over this + * stream up to a certain point in time. + * + * Since we can't guarantee that a stream will ever have + * any activity, we can't rely on the fact that + * bt_iter_next will be called for each stream and deal + * with inactive streams. So instead, we return 0 here + * to the caller and let the read API handle the + * retry case. */ + ret = 0; goto reinsert; } else if (ret) { goto end; @@ -820,11 +829,6 @@ reinsert: 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;