Hi, Sree, I do not have a minimum code snippet that can reproduce (and I only encountered the assertion once). I can only discribe the scenario: 1. I am using bidirectional async stream to maintain the heartbeat between server and client. 2. The assertion is in client side exiting phase. 3. The client stream will periodically send msg to server (around 500ms a msg). The test case will first try cancel client stream and when there is no inflight-read/write, it will try to shutdown the client CQ. (Notice at that time the server stream and CQ are still running)
In the log above, the ThreadId 14901 is using to process the server completion queue; 14886 is using to process the client completion queue. Hope you can get some information from my description. Thanks, Yihao 在 2017年9月15日星期五 UTC-7上午7:12:23,Sree Kuchibhotla写道: > > It does look like a bug in the completion queue shutdown path. Can you > share the test program you have been using to reproduce this ? > > thanks, > Sree > > On Thu, Sep 14, 2017 at 6:23 PM, yihao yang <[email protected] > <javascript:>> wrote: > >> I0914 12:05:40.258058747 14907 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x7fa87c004af0, deadline=gpr_timespec { >> tv_sec: 10, tv_nsec: 0, clock_type: 3 }, reserved=(nil)) >> I0914 12:05:40.262040844 14901 completion_queue.c:861] >> RETURN_EVENT[0x1fca250]: QUEUE_TIMEOUT >> I0914 12:05:40.262107598 14901 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fca250, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 362102878, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.262387036 14886 completion_queue.c:861] >> RETURN_EVENT[0x1fd21e0]: QUEUE_TIMEOUT >> I0914 12:05:40.262416496 14886 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fd21e0, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 362410478, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.288670933 8291 completion_queue.c:861] >> RETURN_EVENT[0x1fc20c0]: QUEUE_TIMEOUT >> I0914 12:05:40.288740234 8291 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fc20c0, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 388734668, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.362347155 14901 completion_queue.c:861] >> RETURN_EVENT[0x1fca250]: QUEUE_TIMEOUT >> I0914 12:05:40.362500837 14901 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fca250, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 462491875, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.362647536 14886 completion_queue.c:861] >> RETURN_EVENT[0x1fd21e0]: QUEUE_TIMEOUT >> I0914 12:05:40.362678953 14886 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fd21e0, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 462672886, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.388942072 8291 completion_queue.c:861] >> RETURN_EVENT[0x1fc20c0]: QUEUE_TIMEOUT >> I0914 12:05:40.389056726 8291 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fc20c0, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 489047123, clock_type: 1 }, reserved=(nil)) >> D0914 12:05:40.392114240 14901 connectivity_state.c:135] CONWATCH: >> 0x7fa80c01eed8 server_transport: from IDLE [cur=READY] notify=0x7fa80c01a138 >> D0914 12:05:40.392180813 14901 connectivity_state.c:135] CONWATCH: >> 0x7fa80c01eed8 server_transport: from READY [cur=READY] >> notify=0x7fa80c01a138 >> I0914 12:05:40.462920251 14886 completion_queue.c:861] >> RETURN_EVENT[0x1fd21e0]: QUEUE_TIMEOUT >> I0914 12:05:40.463057779 14886 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fd21e0, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 563049680, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.463475112 14901 completion_queue.c:861] >> RETURN_EVENT[0x1fca250]: QUEUE_TIMEOUT >> I0914 12:05:40.463502256 14901 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fca250, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 563497963, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.489336198 8291 completion_queue.c:861] >> RETURN_EVENT[0x1fc20c0]: QUEUE_TIMEOUT >> I0914 12:05:40.489426090 8291 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fc20c0, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 589417977, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.563312610 14886 completion_queue.c:861] >> RETURN_EVENT[0x1fd21e0]: QUEUE_TIMEOUT >> I0914 12:05:40.563392795 14886 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fd21e0, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 663385808, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.563684056 14901 completion_queue.c:861] >> RETURN_EVENT[0x1fca250]: QUEUE_TIMEOUT >> I0914 12:05:40.563706730 14901 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fca250, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 663702959, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.589633763 8291 completion_queue.c:861] >> RETURN_EVENT[0x1fc20c0]: QUEUE_TIMEOUT >> I0914 12:05:40.589719300 8291 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fc20c0, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 689710645, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.663776 14906 single_thread_worker.cpp:84] >> SingleThreadWorker stop: HeartbeatClient >> >> // stop bidirectional stream >> I0914 12:05:40.663796024 8267 call.c:583] >> grpc_call_cancel(call=0x1fdb758, reserved=(nil)) >> I0914 12:05:40.664022389 8267 client_channel.c:1300] >> OP[client-channel:0x1fdbe10]: [UNCOVERED] CANCEL:"Cancelled" >> I0914 12:05:40.664053075 8267 http_client_filter.c:435] >> OP[http-client:0x1fe0900]: [UNCOVERED] CANCEL:"Cancelled" >> I0914 12:05:40.664066269 8267 connected_channel.c:70] >> OP[connected:0x1fe0930]: [UNCOVERED] CANCEL:"Cancelled" >> I0914 12:05:40.664119609 8267 completion_queue.c:564] >> cq_end_op_for_next(exec_ctx=0x7fffc824c4b0, cc=0x1fd21e0, tag=0x1fdc078, >> error="No Error", done=0x552280, done_arg=0x1fe1778, storage=0x1fe1780) >> I0914 12:05:40.664163094 14901 completion_queue.c:861] >> RETURN_EVENT[0x1fca250]: QUEUE_TIMEOUT >> I0914 12:05:40.664193123 14901 completion_queue.c:764] >> grpc_completion_queue_next(cc=0x1fca250, deadline=gpr_timespec { tv_sec: >> 1505415940, tv_nsec: 764188067, clock_type: 1 }, reserved=(nil)) >> I0914 12:05:40.664274513 14901 completion_queue.c:564] >> cq_end_op_for_next(exec_ctx=0x7fa86f7fdb80, cc=0x1fca250, >> tag=0x7fa87c01d138, error="No Error", done=0x552280, >> done_arg=0x7fa80c010f58, storage=0x7fa80c010f60) >> D0914 12:05:40.664341644 14901 call.c:706] >> get_final_status SVR >> D0914 12:05:40.664383484 14901 call.c:709] 1: >> {"created":"@1505415940.664334949","description":"Error received from >> peer","file":"src/core/lib/surface/call.c","file_line":955,"grpc_message":"Received >> >> RST_STREAM with error code 8","grpc_status":1} >> I0914 12:05:40.664424456 14901 completion_queue.c:564] >> cq_end_op_for_next(exec_ctx=0x7fa86f7fdb80, cc=0x1fca250, >> tag=0x7fa80c005dc0, error="No Error", done=0x552280, >> done_arg=0x7fa80c010e88, storage=0x7fa80c010e90) >> >> I0914 12:05:40.664525623 14901 completion_queue.c:861] >> RETURN_EVENT[0x1fca250]: OP_COMPLETE: tag:0x7fa87c01d138 OK >> I0914 12:05:40.664557682 14901 call.c:634] >> grpc_call_cancel_with_status(c=0x7fa80c00f7f8, status=1, >> description=Cancelled on the server side, reserved=(nil)) >> >> >> // start to shutdown CQ >> I0914 12:05:40.664123966 14886 completion_queue.c:861] >> RETURN_EVENT[0x1fd21e0]: QUEUE_TIMEOUT >> I0914 12:05:40.664660 14886 completion_queue_manager.cpp:103] Client >> CompletionQueue (0x1fd6670) quit. >> I0914 12:05:40.664697968 8267 completion_queue.c:1086] >> grpc_completion_queue_shutdown(cc=0x1fd21e0) >> I0914 12:05:40.664711547 8267 completion_queue.c:1105] >> grpc_completion_queue_destroy(cc=0x1fd21e0) >> I0914 12:05:40.664717709 8267 completion_queue.c:1086] >> grpc_completion_queue_shutdown(cc=0x1fd21e0) >> E0914 12:05:40.664723704 8267 completion_queue.c:1112] assertion >> failed: cq_event_queue_num_items(&cc->data.queue) == 0 >> >> Hi, all >> >> When testing upgradation of the grpc to version 1.4.2. I encountered >> assertion in CQ shutdown. Can anyone give me some hint? >> >> Thanks, >> Yihao >> >> -- >> You received this message because you are subscribed to the Google Groups >> "grpc.io" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at https://groups.google.com/group/grpc-io. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/grpc-io/32b0826a-ea6f-4188-85d8-1435c134f0ab%40googlegroups.com >> >> <https://groups.google.com/d/msgid/grpc-io/32b0826a-ea6f-4188-85d8-1435c134f0ab%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/grpc-io. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/a63b6995-596f-4426-a137-bd130683698a%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
