From f18f6b149567b3e4e1f9a0cbbe72cd13e4115c8a Mon Sep 17 00:00:00 2001 From: gongdewei Date: Tue, 4 Aug 2020 19:42:41 +0800 Subject: [PATCH] catch unknown message type error --- .../src/main/proto/ArthasResults.proto | 11 ++++++++-- .../ArthasServiceAcquireRequestTest.java | 5 +++++ .../server/ArthasServiceServerTest.java | 20 +++++++++++++------ 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/channel-common/src/main/proto/ArthasResults.proto b/channel-common/src/main/proto/ArthasResults.proto index 601d93427..a3d1e5058 100644 --- a/channel-common/src/main/proto/ArthasResults.proto +++ b/channel-common/src/main/proto/ArthasResults.proto @@ -4,8 +4,9 @@ option java_multiple_files = true; package com.alibaba.arthas.channel.proto; message StatusResult { - int32 statusCode = 1; - string message = 2; + string type = 1; + sint32 statusCode = 2; + string message = 3; } message SystemEnvResult { @@ -16,4 +17,10 @@ message SystemEnvResult { message VersionResult { string type = 1; string version = 2; +} + +message SessionResult { + string type = 1; + int64 javaPid = 2; + string sessionId = 3; } \ No newline at end of file diff --git a/channel-server/src/test/java/com/alibaba/arthas/channel/server/ArthasServiceAcquireRequestTest.java b/channel-server/src/test/java/com/alibaba/arthas/channel/server/ArthasServiceAcquireRequestTest.java index a0558afdc..e89a453d9 100644 --- a/channel-server/src/test/java/com/alibaba/arthas/channel/server/ArthasServiceAcquireRequestTest.java +++ b/channel-server/src/test/java/com/alibaba/arthas/channel/server/ArthasServiceAcquireRequestTest.java @@ -9,6 +9,7 @@ import com.alibaba.arthas.channel.proto.ExecuteParams; import com.alibaba.arthas.channel.proto.ExecuteResult; import com.alibaba.arthas.channel.proto.GeneralResult; import com.alibaba.arthas.channel.proto.ResponseStatus; +import com.alibaba.arthas.channel.proto.SessionResult; import com.alibaba.arthas.channel.proto.StatusResult; import com.alibaba.arthas.channel.proto.SystemEnvResult; import com.alibaba.arthas.channel.proto.VersionResult; @@ -161,6 +162,10 @@ public class ArthasServiceAcquireRequestTest { .setStatusCode(0) .build())); } else { + results.add(Any.pack(SessionResult.newBuilder() + .setJavaPid(1923) + .setSessionId("sessionId-222") + .build())); results.add(Any.pack(StatusResult.newBuilder() .setStatusCode(-1) .setMessage("Not supported command") diff --git a/channel-server/src/test/java/com/alibaba/arthas/channel/server/ArthasServiceServerTest.java b/channel-server/src/test/java/com/alibaba/arthas/channel/server/ArthasServiceServerTest.java index ac2fab177..207b94526 100644 --- a/channel-server/src/test/java/com/alibaba/arthas/channel/server/ArthasServiceServerTest.java +++ b/channel-server/src/test/java/com/alibaba/arthas/channel/server/ArthasServiceServerTest.java @@ -162,15 +162,21 @@ public class ArthasServiceServerTest { executeResult.getJobId(); executeResult.getJobStatus(); List resultsList = executeResult.getResultsList(); - try { - for (Any result : resultsList) { - String clazzName = result.getTypeUrl().split("/")[1]; + for (Any result : resultsList) { + String clazzName = result.getTypeUrl().split("/")[1];; + Message resultMessage = null; + //catch unknown message type error + try { Class resultClass = (Class) Class.forName(clazzName); - Message resultMessage = result.unpack(resultClass); + resultMessage = result.unpack(resultClass); + } catch (Throwable e) { + System.out.println("parse result failure, clazzName: " + clazzName +", error: " + e.toString()); + e.printStackTrace(); + } + + if (resultMessage != null) { handleResultMessage(resultMessage); } - } catch (Exception e) { - e.printStackTrace(); } } try { @@ -238,6 +244,8 @@ public class ArthasServiceServerTest { } private static void handleResultMessage(Message resultMessage) { + System.out.println("result message: "+resultMessage.getClass().getName()); + } }