Skip to content

Commit 3d31298

Browse files
committed
Fix polling logic
1 parent 593ddd8 commit 3d31298

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

sea-streamer-fuse/src/lib.rs

+11-6
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ where
107107
Poll::Ready(Some(Ok(mes))) => {
108108
let key = mes.stream_key();
109109
this.keys.entry(key).or_default().push_back(mes);
110+
// keep polling
110111
}
111112
Poll::Ready(Some(Err(err))) => {
112113
*this.ended = true;
@@ -116,14 +117,18 @@ where
116117
*this.ended = true;
117118
break;
118119
}
119-
Poll::Pending => return Poll::Pending,
120-
}
121-
if !this.keys.values().any(|ms| ms.is_empty()) {
122-
// if none of the streams are empty
123-
break;
120+
Poll::Pending => {
121+
// take a break
122+
break;
123+
}
124124
}
125125
}
126-
Poll::Ready(Self::next(this.keys).map(Ok))
126+
if *this.ended || !this.keys.values().any(|ms| ms.is_empty()) {
127+
// if none of the streams are empty
128+
return Poll::Ready(Self::next(this.keys).map(Ok));
129+
} else {
130+
Poll::Pending
131+
}
127132
}
128133
}
129134

0 commit comments

Comments
 (0)