futures::stream::select will poll streams in a round-robin fashion, which means one stream can be blocked if the other stream does not have item ready.
It replaces select to futures::stream_select! which just poll stream whichever comes first.
Without patch - it hangs if there are 3 or more logs. It runs okay if we comment out 1 or 2 logs.
With patch - it run okay regardless of number of logs
futures::stream::select
will poll streams in a round-robin fashion, which means one stream can be blocked if the other stream does not have item ready.It replaces select to
futures::stream_select!
which just poll stream whichever comes first.Reference: https://docs.rs/futures/latest/futures/stream/fn.select.html Reference: https://docs.rs/futures/latest/futures/macro.stream_select.html
Note: current
master
branch is broken and need to apply #406 first.Demo of bug: https://github.com/blmarket/tower-lsp/blob/buggy-example/tests/buggy.rs
Without patch - it hangs if there are 3 or more logs. It runs okay if we comment out 1 or 2 logs. With patch - it run okay regardless of number of logs