Thanks for the info Yihao. This does look like a bug but I am not sure what
might be happening.

We did fix a bug in completion queue shutdown path (
https://github.com/grpc/grpc/pull/11703) but that is in version 1.6.0 and
later  *- *Would you mind upgrading to the latest release *1.6.1 *and retry
your test ?

thanks,
Sree

On Sat, Sep 16, 2017 at 4:27 PM, yihao yang <[email protected]> wrote:

> 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]> 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].
>>> 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/ms
>>> gid/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
> <https://groups.google.com/d/msgid/grpc-io/a63b6995-596f-4426-a137-bd130683698a%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/CALRi9Qe4LrVvbF-ASUvNOL804%3De6UEmR%2BS1ZkXd2cNzQb5U3pg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to