zhaohaidao commented on PR #5617:
URL: https://github.com/apache/opendal/pull/5617#issuecomment-2694987186
> Hi, @zhaohaidao it looks like you are blocked here. Would you like to
share what's wrong happened?
Thanks, I am tracking down the problem of case failure when option
recursive=true, for example test_list_empty_dir.
The failure stack is as follows, I am trying to analyze whether the behavior
of hdfs_native is as expected
```
2025-03-03T16:42:04.462290Z DEBUG opendal::services: service=hdfs_native
name= path=dc62cd36-b2be-40ef-8cdf-be3a27b16216/: list created lister
at src/layers/logging.rs:220
2025-03-03T16:42:04.462342Z TRACE opendal::services: service=hdfs_native
name= path=dc62cd36-b2be-40ef-8cdf-be3a27b16216/ listed=0: List::next started
at src/layers/logging.rs:220
2025-03-03T16:42:04.462376Z INFO opendal::services::hdfs_native::backend:
backend list started. path dc62cd36-b2be-40ef-8cdf-be3a27b16216/ p
/tmp/opendal/a2045853-d659-43e0-ae94-76f79c917547/dc62cd36-b2be-40ef-8cdf-be3a27b16216/
at src/services/hdfs_native/backend.rs:254
2025-03-03T16:42:04.467877Z TRACE opendal::services: service=hdfs_native
name= path=dc62cd36-b2be-40ef-8cdf-be3a27b16216/ listed=1
entry=dc62cd36-b2be-40ef-8cdf-be3a27b16216/: List::next succeeded
thread '<unnamed>' panicked at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/unfold.rs:108:21:
Unfold must not be polled after it returned `Poll::Ready(None)`
stack backtrace:
at src/layers/logging.rs:220
2025-03-03T16:42:04.467933Z TRACE opendal::services: service=hdfs_native
name= path=dc62cd36-b2be-40ef-8cdf-be3a27b16216/ listed=1: List::next started
at src/layers/logging.rs:220
0: rust_begin_unwind
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panicking.rs:692:5
1: core::panicking::panic_fmt
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/panicking.rs:75:14
2: core::panicking::panic
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/panicking.rs:145:5
3: <futures_util::stream::unfold::Unfold<T,F,Fut> as
futures_core::stream::Stream>::poll_next
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/unfold.rs:108:21
4: <core::pin::Pin<P> as futures_core::stream::Stream>::poll_next
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.31/src/stream.rs:130:9
5: futures_util::stream::stream::StreamExt::poll_next_unpin
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/mod.rs:1638:9
6: <futures_util::stream::stream::next::Next<St> as
core::future::future::Future>::poll
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/next.rs:32:9
7: <opendal::services::hdfs_native::lister::HdfsNativeLister as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/services/hdfs_native/lister.rs:60:34
8: <core::option::Option<P> as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/raw/oio/list/api.rs:46:33
9: <opendal::layers::error_context::ErrorContextWrapper<T> as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/layers/error_context.rs:424:14
10: <opendal::raw::oio::list::flat_list::FlatLister<A,L> as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/raw/oio/list/flat_list.rs:104:33
11: <opendal::raw::enum_utils::FourWays<ONE,TWO,THREE,FOUR> as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/raw/enum_utils.rs:224:38
12: <core::pin::Pin<P> as core::future::future::Future>::poll
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/future/future.rs:124:9
13: <alloc::boxed::Box<T> as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/raw/oio/list/api.rs:64:37
14: <opendal::layers::logging::LoggingLister<P,I> as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/layers/logging.rs:1198:37
15: <core::pin::Pin<P> as core::future::future::Future>::poll
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/future/future.rs:124:9
16: <alloc::boxed::Box<T> as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/raw/oio/list/api.rs:64:37
17: <tokio::time::timeout::Timeout<T> as
core::future::future::Future>::poll
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.42.0/src/time/timeout.rs:202:33
18: opendal::layers::timeout::TimeoutWrapper<R>::io_timeout::{{closure}}
at ./src/layers/timeout.rs:348:44
19: <opendal::layers::timeout::TimeoutWrapper<R> as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/layers/timeout.rs:384:82
20: <core::pin::Pin<P> as core::future::future::Future>::poll
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/future/future.rs:124:9
21: <alloc::boxed::Box<T> as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/raw/oio/list/api.rs:64:37
22: <opendal::layers::retry::RetryWrapper<P,I> as
opendal::raw::oio::list::api::List>::next::{{closure}}::{{closure}}::{{closure}}
at ./src/layers/retry.rs:707:36
23:
<backon::retry_with_context::RetryWithContext<B,T,E,Ctx,Fut,FutureFn,SF,RF,NF>
as core::future::future::Future>::poll
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/backon-1.3.0/src/retry_with_context.rs:327:45
24: <opendal::layers::retry::RetryWrapper<P,I> as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/layers/retry.rs:716:10
25: <core::pin::Pin<P> as core::future::future::Future>::poll
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/future/future.rs:124:9
26: <alloc::boxed::Box<T> as
opendal::raw::oio::list::api::List>::next::{{closure}}
at ./src/raw/oio/list/api.rs:64:37
27: <core::pin::Pin<P> as core::future::future::Future>::poll
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/future/future.rs:124:9
28: <opendal::types::list::Lister as
futures_core::stream::Stream>::poll_next::{{closure}}
at ./src/types/list.rs:70:45
29: <opendal::types::list::Lister as
futures_core::stream::Stream>::poll_next
at ./src/types/list.rs:77:42
30: <S as futures_core::stream::TryStream>::try_poll_next
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.31/src/stream.rs:206:9
31: futures_util::stream::try_stream::TryStreamExt::try_poll_next_unpin
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/try_stream/mod.rs:1131:9
32: <futures_util::stream::try_stream::try_next::TryNext<St> as
core::future::future::Future>::poll
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/try_stream/try_next.rs:32:9
33: behavior::async_list::test_list_empty_dir::{{closure}}
at ./tests/behavior/async_list.rs:190:41
34: tokio::runtime::park::CachedParkThread::block_on::{{closure}}
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.42.0/src/runtime/park.rs:281:63
35: tokio::runtime::coop::with_budget
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.42.0/src/runtime/coop.rs:107:5
36: tokio::runtime::coop::budget
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.42.0/src/runtime/coop.rs:73:5
37: tokio::runtime::park::CachedParkThread::block_on
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.42.0/src/runtime/park.rs:281:31
38: tokio::runtime::context::blocking::BlockingRegionGuard::block_on
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.42.0/src/runtime/context/blocking.rs:66:9
39: tokio::runtime::handle::Handle::block_on_inner::{{closure}}
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.42.0/src/runtime/handle.rs:327:13
40: tokio::runtime::context::runtime::enter_runtime
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.42.0/src/runtime/context/runtime.rs:65:16
41: tokio::runtime::handle::Handle::block_on_inner
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.42.0/src/runtime/handle.rs:326:9
42: tokio::runtime::handle::Handle::block_on
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.42.0/src/runtime/handle.rs:305:13
43: behavior::utils::build_async_trial::{{closure}}
at ./tests/behavior/utils.rs:71:9
44: libtest_mimic::Trial::test::{{closure}}
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libtest-mimic-0.8.1/src/lib.rs:119:54
45: core::ops::function::FnOnce::call_once{{vtable.shim}}
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/ops/function.rs:250:5
46: <alloc::boxed::Box<F,A> as
core::ops::function::FnOnce<Args>>::call_once
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/alloc/src/boxed.rs:1993:9
47: libtest_mimic::run_single::{{closure}}
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libtest-mimic-0.8.1/src/lib.rs:576:43
48: <core::panic::unwind_safe::AssertUnwindSafe<F> as
core::ops::function::FnOnce<()>>::call_once
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/panic/unwind_safe.rs:272:9
49: std::panicking::try::do_call
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panicking.rs:584:40
50: __rust_try
51: std::panicking::try
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panicking.rs:547:19
52: std::panic::catch_unwind
at
/rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panic.rs:358:14
53: libtest_mimic::run_single
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libtest-mimic-0.8.1/src/lib.rs:576:5
54: libtest_mimic::run::{{closure}}::{{closure}}
at
/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libtest-mimic-0.8.1/src/lib.rs:531:43
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose
backtrace.
test behavior::test_list_empty_dir ... FAILED
failures:
---- behavior::test_list_empty_dir ----
test panicked: Unfold must not be polled after it returned
`Poll::Ready(None)`
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]