ForeignExceptions are sent to 'remote' peers to signal an abort in the face of failures. When serialized for transmission we encode using Protobufs to ensure version compatibility.
Foreign exceptions contain a Throwable as its cause. This can be a "regular" exception generated locally or a ProxyThrowable that is a representation of the original exception created on original 'remote' source. These ProxyThrowables have their their stacks traces and messages overridden to reflect the original 'remote' exception. The only way these ProxyThrowables are generated are by this class's {@link #deserialize(byte[])} method.
|
|