Can you please elaborate on "nothing is guaranteed in-order at the CQ"? Is it wrong to think about the CQ as a queue?
Reiterating the original objective: to use grpc completion_queue to tunnel non-grpc events so that the application event loop has only one queue to wait on. The FIFO order of non-grpc events must be preserved. Sound like alarms is not the right path. "But Why" question is harder to answer if Alarm is the answer. An alternative is grpc_cq_begin_op() and grpc_cq_end_op() APIs. However, it looks like applications using this api directly is not desirable for portability reasons. Is it desirable to the gRPC team to extend C or C++ completion_queue design/implementation to facilitate insertion of application-defined completed ops/tags? I'm not sure how the two approaches compare with respect to complexity, intrusiveness, and hackiness spectrum. Thoughts? On Tue, 19 Feb 2019 at 22:26, 'Vijay Pai' via grpc.io < [email protected]> wrote: > Sorry for the late response. To further what Sree said, any use of alarms > at all is not a common case so we've never special cased any of this. I > imagine that we could accept a PR but I also expect that it would have to > pass the "but why" threshold. None of this is what we consider > timing-sensitive as long as it's good enough. And to confirm Sree: nothing > is guaranteed in-order at the CQ, regardless of timeout. > > On Friday, February 15, 2019 at 2:34:30 PM UTC-8, Sree Kuchibhotla wrote: >> >> Hi Sumant, >> Zero timeout alarms is not a common case (Vijay can correct me here) and >> so it wouldn't make sense to special-case this. >> >> -Sree >> >> On Fri, Feb 15, 2019 at 11:37 AM <[email protected]> wrote: >> >>> Hi Sree, >>> >>> Whoa! This behavior is such a gotcha. It seem you are saying >>> immediately-firing alarms don't in fact "fire immediately", Right? Naively >>> one would think that zero-deadline alarms would be optimized and would be >>> queued right-away as there's no apparent reason for using a timer. That's >>> just me though. >>> >>> Is it worth adding such an optimization in gRPC core? >>> >>> Thx a bunch for answering such a nuanced question promptly. >>> >>> Regards, >>> Sumant >>> >>> On Friday, February 15, 2019 at 10:56:08 AM UTC-8, Sree Kuchibhotla >>> wrote: >>>> >>>> Hi Sumant, >>>> If you create two alarms with zero timeout in quick succession, then >>>> they may not "fire" in the same order you created - and hence FIFO isn't >>>> guaranteed here. However, if the alarms are created reasonably spaced apart >>>> (like for example: tens of millis apart), then yes -they fire in FIFO. >>>> (Note that an alarm underneath creates a timer which when fired queues >>>> the completion event in the completion queue. So we are really at the mercy >>>> of the grpc timer component.).. >>>> >>>> Hope this helps. >>>> -Sree >>>> >>>> >>>> On Fri, Feb 15, 2019 at 10:29 AM <[email protected]> wrote: >>>> >>>>> Hi Vijay, >>>>> >>>>> Just confirming that FIFO ordering of immediately-firing alarms is >>>>> guaranteed by the complete_queue. Right? >>>>> >>>>> -Sumant >>>>> >>>>> On Friday, February 8, 2019 at 8:10:39 AM UTC-8, [email protected] >>>>> wrote: >>>>>> >>>>>> Hi Vijay, >>>>>> >>>>>> 3,000,000 per second rocks! >>>>>> Thx much everyone! >>>>>> >>>>>> Regards, >>>>>> Sumant >>>>>> >>>>>> On Thursday, February 7, 2019 at 8:43:53 AM UTC-8, Vijay Pai wrote: >>>>>>> >>>>>>> I just created a pull request to benchmark immediately-firing >>>>>>> alarms. The results on my Mac laptop suggest that you can fire at least >>>>>>> 3,000,000 immediate alarms per second on a single thread, so I don't >>>>>>> think >>>>>>> you'll hit a limit from that. >>>>>>> >>>>>>> I would strongly advise against directly using >>>>>>> grpc_cq_begin_op/grpc_cq_end_op . Those are internal functions and will >>>>>>> change name/behavior whenever we choose. >>>>>>> >>>>>>> I should have some more information to announce on the callback API >>>>>>> within the next few weeks but we continue to prepare it for >>>>>>> production-readiness in both unary and streaming cases. >>>>>>> >>>>>>> - Vijay >>>>>>> >>>>>>> -- >>>>> You received this message because you are subscribed to a topic in the >>>>> Google Groups "grpc.io" group. >>>>> To unsubscribe from this topic, visit >>>>> https://groups.google.com/d/topic/grpc-io/NyjgbqHxTm8/unsubscribe. >>>>> To unsubscribe from this group and all its topics, 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/98abb701-1b90-4c2f-87ea-821b83d17564%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/grpc-io/98abb701-1b90-4c2f-87ea-821b83d17564%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 a topic in the >>> Google Groups "grpc.io" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/grpc-io/NyjgbqHxTm8/unsubscribe. >>> To unsubscribe from this group and all its topics, 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/921b1360-8f74-484f-af53-6755715d9708%40googlegroups.com >>> <https://groups.google.com/d/msgid/grpc-io/921b1360-8f74-484f-af53-6755715d9708%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 a topic in the > Google Groups "grpc.io" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/grpc-io/NyjgbqHxTm8/unsubscribe. > To unsubscribe from this group and all its topics, 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/cb3be957-4d35-4fbb-9f4e-2f94bffd7088%40googlegroups.com > <https://groups.google.com/d/msgid/grpc-io/cb3be957-4d35-4fbb-9f4e-2f94bffd7088%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/CAPm0gKTdq3fu8Adr%3D5xXdGetKYXGjDEDfdPrbqD4Ux4Dp64Diw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
