diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/call/TripleClientCall.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/call/TripleClientCall.java index a7d5e39d804..4ee3512adfe 100644 --- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/call/TripleClientCall.java +++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/call/TripleClientCall.java @@ -74,8 +74,10 @@ public void onMessage(byte[] message) { final Object unpacked = requestMetadata.packableMethod.parseResponse(message); listener.onMessage(unpacked); } catch (Throwable t) { - cancelByLocal(TriRpcStatus.INTERNAL.withDescription("Deserialize response failed") - .withCause(t).asException()); + TriRpcStatus status = TriRpcStatus.INTERNAL.withDescription("Deserialize response failed") + .withCause(t); + cancelByLocal(status.asException()); + listener.onClose(status,null); LOGGER.error(PROTOCOL_FAILED_RESPONSE, "", "", String.format("Failed to deserialize triple response, service=%s, method=%s,connection=%s", connection, requestMetadata.service, requestMetadata.method.getMethodName()), t); }