stepancheg / grpc-rust

Rust implementation of gRPC
MIT License
1.38k stars 124 forks source link

interop: large_unary test does not consistently succeed #39

Closed stevej closed 7 years ago

stevej commented 7 years ago

(meta-note: would it be possible to have an interop label for issues? Also, steps for building and running the interop tests are coming up in a PR)

When testing grpc-rust interop with the grpc-go client, the large_unary test does not succeed consistently, sometimes failing with a server side panic 'stream not found'

/Users/stevej% ./go-grpc-interop-client -use_tls=false  -test_case=large_unary -server_port=60011
2017/01/25 12:49:58 LargeUnaryCall done
/Users/stevej% ./go-grpc-interop-client -use_tls=false  -test_case=large_unary -server_port=60011
2017/01/25 12:49:59 LargeUnaryCall done
/Users/stevej% ./go-grpc-interop-client -use_tls=false  -test_case=large_unary -server_port=60011
2017/01/25 12:49:59 /TestService/UnaryCall RPC failed: rpc error: code = 2 desc = unexpected EOF
/Users/stevej% ./go-grpc-interop-client -use_tls=false  -test_case=large_unary -server_port=60011
2017/01/25 12:50:00 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp 127.0.0.1:60011: getsockopt: connection refused"; Reconnecting to {127.0.0.1:60011 <nil>}
2017/01/25 12:50:00 /TestService/UnaryCall RPC failed: rpc error: code = 14 desc = grpc: the connection is unavailable

Here is the server log:

/Users/stevej/src/grpc-rust/interop% RUST_BACKTRACE=1 ../target/debug/grpc-interop                                                     (git)-[stevej/interop_improvements]
thread '<unnamed>' panicked at 'stream not found: 1', ../src/libcore/option.rs:705
stack backtrace:
   1:        0x10c45bf4a - std::sys::imp::backtrace::tracing::imp::write::h917062bce4ff48c3
   2:        0x10c45f2bf - std::panicking::default_hook::{{closure}}::h0bacac31b5ed1870
   3:        0x10c45db4f - std::panicking::default_hook::h5897799da33ece67
   4:        0x10c45e186 - std::panicking::rust_panic_with_hook::h109e116a3a861224
   5:        0x10c45e024 - std::panicking::begin_panic::hbb38be1379e09df0
   6:        0x10c45df42 - std::panicking::begin_panic_fmt::h26713cea9bce3ab0
   7:        0x10c45dea7 - rust_begin_unwind
   8:        0x10c489e10 - core::panicking::panic_fmt::hcfbb59eeb7f27f75
   9:        0x10c489e7d - core::option::expect_failed::h530ede3d41450938
  10:        0x10bf7aff3 - <core::option::Option<T>>::expect::h989efd4584df5caf
  11:        0x10c063a3e - httpbis::http_common::LoopInner::close_remote::h4897c08ea604bcab
  12:        0x10c064fb9 - httpbis::http_common::LoopInner::process_stream_frame::h4f0563f1432aae44
  13:        0x10c063f90 - httpbis::http_common::LoopInner::process_raw_frame::h72512b2fdbea3350
  14:        0x10c0d77c9 - <httpbis::http_common::ReadLoopData<I, N>>::process_raw_frame::{{closure}}::h8ac4e6a9a470fc80
  15:        0x10c0d6c42 - <httpbis::futures_misc::task_data::TaskRcMut<A>>::with::{{closure}}::hd8418ff3a647b2e0
  16:        0x10c0d6b15 - <futures::task_impl::task_rc::TaskRc<A>>::with::{{closure}}::h5957640af0198563
  17:        0x10c0628ee - futures::task_impl::with::h4d500208dd9714d1
  18:        0x10c00cef8 - <futures::task_impl::task_rc::TaskRc<A>>::with::h5788a6804680fb11
  19:        0x10c018bde - <httpbis::futures_misc::task_data::TaskRcMut<A>>::with::h58f5fe718ee762a6
  20:        0x10c019248 - <httpbis::http_common::ReadLoopData<I, N>>::process_raw_frame::hdcbf98d7fedea675
  21:        0x10c0c7a30 - <httpbis::http_common::ReadLoopData<I, N>>::read_process_frame::{{closure}}::hdead651237ee6cdc
  22:        0x10c0c78d9 - <futures::future::and_then::AndThen<A, B, F> as futures::future::Future>::poll::{{closure}}::{{closure}}::ha5d3b6079c0ac19d
  23:        0x10bfb101c - <core::result::Result<T, E>>::map::haa30dcaec57e0afb
  24:        0x10c0c7765 - <futures::future::and_then::AndThen<A, B, F> as futures::future::Future>::poll::{{closure}}::h5aff83becb316430
  25:        0x10c02a579 - <futures::future::chain::Chain<A, B, C>>::poll::h934fd2c32af9196a
  26:        0x10bf2869b - <futures::future::and_then::AndThen<A, B, F> as futures::future::Future>::poll::h624afae44e01cb9d
  27:        0x10c012360 - <Box<F> as futures::future::Future>::poll::h5663703284cfc5b0
  28:        0x10c07568f - <futures::future::map::Map<A, F> as futures::future::Future>::poll::h60a02ff1edd682f7
  29:        0x10c0a128e - <futures::future::loop_fn::LoopFn<A, F> as futures::future::Future>::poll::h9d909abadeaa99b6
  30:        0x10c0124e0 - <Box<F> as futures::future::Future>::poll::hbe74747cdbd82b2d
  31:        0x10c0033cf - <futures::future::join::MaybeDone<A>>::poll::h8c350fc7330571eb
  32:        0x10c07a23b - <futures::future::join::Join<A, B> as futures::future::Future>::poll::h257a1f5590ca58d7
  33:        0x10c002a6f - <futures::future::join::MaybeDone<A>>::poll::h3be9cb5a48e44920
  34:        0x10c07a61e - <futures::future::join::Join<A, B> as futures::future::Future>::poll::h7b93ebbe7fc432e4
  35:        0x10c074e3f - <futures::future::map::Map<A, F> as futures::future::Future>::poll::h0b7182e2ef4cbfe9
  36:        0x10c02ca9b - <futures::future::chain::Chain<A, B, C>>::poll::hba6b3744f00ea1a3
  37:        0x10bf2881b - <futures::future::and_then::AndThen<A, B, F> as futures::future::Future>::poll::h8559062ece4a4531
  38:        0x10c0293de - <futures::future::chain::Chain<A, B, C>>::poll::h8f1d4633982e819c
  39:        0x10c0a9e8b - <futures::future::then::Then<A, B, F> as futures::future::Future>::poll::hb174db5a4c6c7c90
  40:        0x10c0124e0 - <Box<F> as futures::future::Future>::poll::hbe74747cdbd82b2d
  41:        0x10c02bc8e - <futures::future::chain::Chain<A, B, C>>::poll::haff940f1c66c0cd6
  42:        0x10c0a9e4b - <futures::future::then::Then<A, B, F> as futures::future::Future>::poll::h590b8b9950fe08d8
  43:        0x10c0a1c17 - <futures::future::map_err::MapErr<A, F> as futures::future::Future>::poll::h215309a7cb9600ab
  44:        0x10c2fd641 - <Box<F> as futures::future::Future>::poll::h0bf7c3a7376c0fb7
  45:        0x10c31424c - <futures::task_impl::Spawn<F>>::poll_future::{{closure}}::h25b21ab6d3e3c43c
  46:        0x10c31434e - <futures::task_impl::Spawn<T>>::enter::{{closure}}::hbd6ae331b59e3928
  47:        0x10c3145d5 - futures::task_impl::set::{{closure}}::h24e11cc8086d0707
  48:        0x10c2ed3db - <std::thread::local::LocalKey<T>>::with::hf28f9eabb1a35cb7
  49:        0x10c3029e7 - futures::task_impl::set::h37e185db962d9e2c
  50:        0x10c2eb2b3 - <futures::task_impl::Spawn<T>>::enter::hef2312ed513d9ba9
  51:        0x10c2eae12 - <futures::task_impl::Spawn<F>>::poll_future::hf33a49ae53a9d9f4
  52:        0x10c313cc6 - tokio_core::reactor::Core::dispatch_task::{{closure}}::h8206a940250cd144
  53:        0x10c2e7285 - <scoped_tls::ScopedKey<T>>::set::hc614969f549da2f2
  54:        0x10c30e829 - tokio_core::reactor::Core::dispatch_task::h0611009a070b78ad
  55:        0x10c30da68 - tokio_core::reactor::Core::dispatch::hb52174544f2ea540
  56:        0x10c30d67e - tokio_core::reactor::Core::poll::h43f4b499158d6eeb
  57:        0x10bf378a0 - tokio_core::reactor::Core::run::hff9aa04c61170002
  58:        0x10c069c24 - httpbis::server::run_server_event_loop::h2c4616fe62e930bc
  59:        0x10c0d86da - httpbis::server::HttpServer::new::{{closure}}::h676f8b24bb44f4b0
  60:        0x10c09900b - <std::panic::AssertUnwindSafe<F> as core::ops::FnOnce<()>>::call_once::h39220ce80d5b6b28
  61:        0x10bf9ae96 - std::panicking::try::do_call::h8c72af1898eb6da3
  62:        0x10c45f87a - __rust_maybe_catch_panic
  63:        0x10bf9a110 - std::panicking::try::h80e0693523141e0b
  64:        0x10bf98695 - std::panic::catch_unwind::ha44a07ca6ac143a1
  65:        0x10c0d27b8 - std::thread::Builder::spawn::{{closure}}::hef856fb921630796
  66:        0x10c001590 - <F as alloc::boxed::FnBox<A>>::call_box::h4ce7df1bead467ca
  67:        0x10c45d634 - std::sys::imp::thread::Thread::new::thread_start::ha102a6120fc52763
  68:     0x7fffbd9d7aaa - _pthread_body
  69:     0x7fffbd9d79f6 - _pthread_start
stepancheg commented 7 years ago

would it be possible to have an interop label for issues?

I've create an issue #47 to track interop state.

Also, steps for building and running the interop tests are coming up in a PR

Thanks in advance!