tower-lsp
tower-lsp copied to clipboard
Replace stream::select to stream_select!
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
3 months with no update, so ping here. will ping again next year.