I’ve been having diffulty understanding the exact guarantees of gRPC streaming. Mostly because I have heard/read contradicting stories about it.
My question is the following:
If I have a stream [A, B, C]
that Server X
sends to Server Y
, wheter that be in server side streaming, client side streaming or bidi streaming, Is it at all possible that:
Server Y
only receives [A, C]
but B
is lost in a way that Server X
or Server Y
doesn’t notice anything wrong?
The way I assumed it was that since http2 is built on TCP then all elements MUST be at least delivered to the kernel of Server Y
. So absent a crash or the connection exploding I assumed it was not possible to lost an entire message.
But some colleagues have told me this is not the case, It is only guaranteed that they are in order but elements can be lost in the middle.
Can anyone shed some light about the exact delivery guarantees of gRPC streaming?
Any link to further reading about this would also be greatly appreciated.
Thank you!