Hello gRPC friends,
I've got a question about the behavior of streams in the face of communication errors - particularly bidi streams, and particularly in Golang.
If one party A does a stream.Send() call and that returns an error, does this mean that party B's stream.Recv() call will also return (some, but not io.EOF) error? If so, does it also mean that subsequent calls by A to stream.Recv() and by B to stream.Send() will return errors? In other words, does any communication error mean that the stream is dead, cannot be used for any operations on it by either side, and that the remote side will also find out that the stream has not been closed properly by the other side?
And if the answer to all of the above is yes, I'm curious if all this holds even in the case of a one way network partition - packets being allowed to flow only in one direction. Generally, any guidance on error handling with bidi streams would be appreciated; I didn't find much documentation on the subject.
Thanks a lot,
- Andrei