Alex Chi Z.

Results 309 comments of Alex Chi Z.

To reproduce, `RUSTC_LOG=debug ./risedev d`

As a comparison, previous builds only have 0 obligations for all these things.

future_async_stream requires Generator, which seems to have performance issues. Probably related to https://github.com/rust-lang/rust/pull/101692. I can test if that PR would solve this issue by manually build a Rust compiler with...

Also the lifetime issue doesn't look like a false positive. ``` let rotate_last_mut = |buffers: &'a mut Vec| { buffers.push(DioBuffer::with_capacity_in( self.buffer_capacity, &DIO_BUFFER_ALLOCATOR, )); buffers.last_mut().unwrap() }; ``` is defined for `'a...

Unluckily, https://github.com/rust-lang/rust/pull/101692 doesn't help much 🤣 Probably we will need to cooperate with the Rust community to fix this... * futures_async_stream seems to generate too much more obligations than before....

Okay, the problem comes to HashJoin again. After clearing all function body of `HashJoin`: ``` #[try_stream(ok = Message, error = StreamExecutorError)] async fn into_stream(mut self) {} ``` Everything works! @yuhao-su...

Unluckily, the bombing obligations seem to originate from StateTableIter ``` INFO rustc_trait_selection::traits::query::normalize normalize::: result=Ok(std::future::from_generator::GenFuture) with 4052 obligations INFO rustc_trait_selection::traits::query::normalize normalize::: result=Ok(std::future::from_generator::GenFuture) with 4052 obligations INFO rustc_trait_selection::traits::query::normalize normalize::: result=Ok(std::future::from_generator::GenFuture) with 4052...

After changing `iter_key_and_val` to `boxed`, risingwave_stream compiles in 40 seconds (still seems slow). cc @BugenZhao now it's your turn to investigate what's happening 🥵 ``` pub async fn iter_key_and_val> {...

My wild guess is that while rustc allows more lifetime generics in the latest version, some wrongly-labeled lifetimes will cause compile issues. Every time we add `'a` at `&self`, there...

The issue now narrows down to risingwave_storage. It seems that it produces 4052 obligations... Most of them are `OutlivesPredicate` (lifetime issues)