hyperium / hyper

An HTTP library for Rust
https://hyper.rs
MIT License
14.42k stars 1.59k forks source link

hyper_client set client_builder.http2_keep_alive_interval(Duration::from_millis(H2_KEEP_ALIVE_INTERVAL)); got mistake #3665

Closed xj524598 closed 4 months ago

xj524598 commented 4 months ago

Version hyper 1.3.1

Platform The output of uname -a (UNIX), or version and 32 or 64-bit (Windows)

Description when i try set client_builder.http2_keep_alive_interval(Duration::from_millis(H2_KEEP_ALIVE_INTERVAL)) And Then when run this code: timeout_result = tokio::time::timeout(timeout, HTTP2_CLIENT_FOR_REQUEST.request(final_hyper_req)).await; it happend mistakes,just like down as follow: thread 'tokio-runtime-worker' panicked at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-1.3.1/src/common/time.rs:37:17: You must supply a timer. stack backtrace: 0: rust_begin_unwind at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:597:5 1: core::panicking::panic_fmt at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/panicking.rs:72:14 2: hyper::common::time::Time::sleep at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-1.3.1/src/common/time.rs:37:17 3: hyper::proto::h2::ping::channel::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-1.3.1/src/proto/h2/ping.rs:63:16 4: core::option::Option::map at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/option.rs:1075:29 5: hyper::proto::h2::ping::channel at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-1.3.1/src/proto/h2/ping.rs:59:22 6: hyper::proto::h2::client::handshake::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-1.3.1/src/proto/h2/client.rs:164:34 7: hyper::client::conn::http2::Builder::handshake::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-1.3.1/src/client/conn/http2.rs:448:18 8: hyper_util::client::legacy::client::Client<C,B>::connect_to::{{closure}}::{{closure}}::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-util-0.1.3/src/client/legacy/client.rs:538:66 9: <core::pin::Pin

as core::future::future::Future>::poll at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/future/future.rs:125:9 10: <futures_util::future::either::Either<A,B> as core::future::future::Future>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.30/src/future/either.rs:109:32 11: ::try_poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-core-0.3.30/src/future.rs:82:9 12: <futures_util::future::try_future::try_flatten::TryFlatten<Fut,::Ok> as core::future::future::Future>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.30/src/future/try_future/try_flatten.rs:57:41 13: <futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.30/src/lib.rs:91:13 14: <futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.30/src/lib.rs:91:13 15: <futures_util::future::either::Either<A,B> as core::future::future::Future>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.30/src/future/either.rs:109:32 16: <hyper_util::common::lazy::Lazy<F,R> as core::future::future::Future>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-util-0.1.3/src/common/lazy.rs:64:20 17: futures_util::future::future::FutureExt::poll_unpin at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.30/src/future/future/mod.rs:558:9 18: <futures_util::future::select::Select<A,B> as core::future::future::Future>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.30/src/future/select.rs:118:35 19: hyper_util::client::legacy::client::Client<C,B>::one_connection_for::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-util-0.1.3/src/client/legacy/client.rs:413:49 20: hyper_util::client::legacy::client::Client<C,B>::connection_for::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-util-0.1.3/src/client/legacy/client.rs:364:61 21: hyper_util::client::legacy::client::Client<C,B>::send_request::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-util-0.1.3/src/client/legacy/client.rs:266:56 22: ::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-util-0.1.3/src/client/legacy/client.rs:682:9 23: <tokio::time::timeout::Timeout as core::future::future::Future>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/time/timeout.rs:202:33 24: mesh::server::client_mesh_proxy::do_client_mesh_proxy_req_retry::{{closure}} at ./mesh/src/server/client_mesh_proxy.rs:319:115 25: mesh::server::client_mesh_proxy::client_mesh_proxy_req_retry::{{closure}} at ./mesh/src/server/client_mesh_proxy.rs:211:98 26: <core::pin::Pin

as core::future::future::Future>::poll at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/future/future.rs:125:9 27: mesh::server::client_mesh_proxy::do_client_mesh_proxy_req::{{closure}} at ./mesh/src/server/client_mesh_proxy.rs:195:81 28: mesh::server::client_mesh_proxy::client_mesh_proxy_req::{{closure}} at ./mesh/src/server/client_mesh_proxy.rs:46:81 29: mesh::server::http_server::MeshHttpServer::run_client_mesh_http2::{{closure}}::{{closure}}::{{closure}}::{{closure}} at ./mesh/src/server/http_server.rs:311:110 30: hyper::proto::h2::server::H2Stream<F,B>::poll2 at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-1.3.1/src/proto/h2/server.rs:432:37 31: <hyper::proto::h2::server::H2Stream<F,B> as core::future::future::Future>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-1.3.1/src/proto/h2/server.rs:520:9 32: <core::pin::Pin

as core::future::future::Future>::poll at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/future/future.rs:125:9 33: tokio::runtime::task::core::Core<T,S>::poll::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/core.rs:328:17 34: tokio::loom::std::unsafe_cell::UnsafeCell::with_mut at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/loom/std/unsafe_cell.rs:16:9 35: tokio::runtime::task::core::Core<T,S>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/core.rs:317:13 36: tokio::runtime::task::harness::poll_future::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/harness.rs:485:19 37: <core::panic::unwind_safe::AssertUnwindSafe as core::ops::function::FnOnce<()>>::call_once at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/panic/unwind_safe.rs:271:9 38: std::panicking::try::do_call at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:504:40 39: _rust_try 40: std::panicking::try at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:468:19 41: std::panic::catch_unwind at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panic.rs:142:14 42: tokio::runtime::task::harness::poll_future at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/harness.rs:473:18 43: tokio::runtime::task::harness::Harness<T,S>::poll_inner at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/harness.rs:208:27 44: tokio::runtime::task::harness::Harness<T,S>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/harness.rs:153:15 45: tokio::runtime::task::raw::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/raw.rs:271:5 46: tokio::runtime::task::raw::RawTask::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/raw.rs:201:18 47: tokio::runtime::task::LocalNotified::run at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/mod.rs:427:9 48: tokio::runtime::scheduler::multi_thread::worker::Context::run_task::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/multi_thread/worker.rs:576:13 49: tokio::runtime::coop::with_budget at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/coop.rs:107:5 50: tokio::runtime::coop::budget at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/coop.rs:73:5 51: tokio::runtime::scheduler::multi_thread::worker::Context::run_task at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/multi_thread/worker.rs:575:9 52: tokio::runtime::scheduler::multi_thread::worker::Context::run at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/multi_thread/worker.rs:526:24 53: tokio::runtime::scheduler::multi_thread::worker::run::{{closure}}::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/multi_thread/worker.rs:491:21 54: tokio::runtime::context::scoped::Scoped::set at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context/scoped.rs:40:9 55: tokio::runtime::context::set_scheduler::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context.rs:176:26 56: std::thread::local::LocalKey::try_with at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/thread/local.rs:270:16 57: std::thread::local::LocalKey::with at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/thread/local.rs:246:9 58: tokio::runtime::context::set_scheduler at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context.rs:176:9 59: tokio::runtime::scheduler::multi_thread::worker::run::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/multi_thread/worker.rs:486:9 60: tokio::runtime::context::runtime::enter_runtime at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/context/runtime.rs:65:16 61: tokio::runtime::scheduler::multi_thread::worker::run at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/multi_thread/worker.rs:478:5 62: tokio::runtime::scheduler::multi_thread::worker::Launch::launch::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/scheduler/multi_thread/worker.rs:447:45 63: <tokio::runtime::blocking::task::BlockingTask as core::future::future::Future>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/blocking/task.rs:42:21 64: tokio::runtime::task::core::Core<T,S>::poll::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/core.rs:328:17 65: tokio::loom::std::unsafe_cell::UnsafeCell::with_mut at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/loom/std/unsafe_cell.rs:16:9 66: tokio::runtime::task::core::Core<T,S>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/core.rs:317:13 67: tokio::runtime::task::harness::poll_future::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/harness.rs:485:19 68: <core::panic::unwind_safe::AssertUnwindSafe as core::ops::function::FnOnce<()>>::call_once at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/core/src/panic/unwind_safe.rs:271:9 69: std::panicking::try::docall at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:504:40 70: rust_try 71: std::panicking::try at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panicking.rs:468:19 72: std::panic::catch_unwind at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library/std/src/panic.rs:142:14 73: tokio::runtime::task::harness::poll_future at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/harness.rs:473:18 74: tokio::runtime::task::harness::Harness<T,S>::poll_inner at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/harness.rs:208:27 75: tokio::runtime::task::harness::Harness<T,S>::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/harness.rs:153:15 76: tokio::runtime::task::raw::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/raw.rs:271:5 77: tokio::runtime::task::raw::RawTask::poll at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/raw.rs:201:18 78: tokio::runtime::task::UnownedTask::run at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/task/mod.rs:464:9 79: tokio::runtime::blocking::pool::Task::run at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/blocking/pool.rs:159:9 80: tokio::runtime::blocking::pool::Inner::run at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/blocking/pool.rs:513:17 81: tokio::runtime::blocking::pool::Spawner::spawn_thread::{{closure}} at /Users/10010268/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.37.0/src/runtime/blocking/pool.rs:471:13 note: Some details are omitted, run with RUST_BACKTRACE=full for a verbose backtrace.

[short summary of the bug] cargo.toml like tokio = { version = "1.37.0", features = ["full"] } hyper = { version = "1.3.1", features = ["full"] }

and tokio defines like

let cpu_limit = num_cpus::get();

let runtime = Builder::new_multi_thread().worker_threads(cpu_limit).enable_all().build().unwrap();

I tried this code:

[code sample that causes the bug]

I expected to see this happen: [explanation]

Instead, this happened: [explanation]

seanmonstar commented 4 months ago

The panic message points out you need to include a timer to the builder, using the timer() method.