Description
Undeclared errors thrown during service invocations are not getting returned correctly. When they are encountered, the writeError method in the responder will try to encode them using errors union for the message. However, because they are undeclared they are not present in the union and encoding causes a further AvroRuntimeException. Its this "Not in union" exception that gets returned to the client, not the undeclared problem which gets lost.
The attached patch handles them like other system errors, calling to string on the exception and writing this as the error to be returned.