I'm trying to decide how to handle stream errors correctly, both in the client and in the server. My working assumption, in Go, is that io.EOF indicates a normal termination and that all other errors are abnormal and permanent, but I'd like to check that assumption.
It would be great to know which gRPC errors are permanent and which, if any, are transient. The Go
Stream interface talks about streams being "done" or "aborted" (both of which sound like permanent states), but without defining these terms further.
The available example code isn't particularly useful as it's not clear which parts are normative.
The gRPC documentation has a section on
error handling, but this doesn't describe which errors are permanent and which are transient. It's not even clear how the status codes described map to language-specific error values. For instance, which value(s) corresponds to
io.EOF (surely a permanent error!) in Go?
Please could someone offer some definitive information?
Regards,
Glyn