{"record":{"id":"fb80a171b08b8a1a","repo":"pinpoint-apm/pinpoint","slug":"unsupported-message","errorCode":null,"errorMessage":"unsupported message ","messagePattern":"unsupported message ","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/sender/grpc/AgentGrpcDataSender.java","lineNumber":91,"sourceCode":"\n    private AgentGrpc.AgentStub newAgentPingStub() {\n        AgentGrpc.AgentStub agentStub = AgentGrpc.newStub(managedChannel);\n        return agentStub.withInterceptors(new SocketIdClientInterceptor());\n    }\n\n\n    private PingStreamContext newPingStream(AgentGrpc.AgentStub agentStub, ScheduledExecutorService reconnectScheduler) {\n        final PingStreamContext pingStreamContext = new PingStreamContext(agentStub, reconnector, reconnectScheduler);\n        logger.info(\"newPingStream:{}\", pingStreamContext);\n        return pingStreamContext;\n    }\n\n\n    @Override\n    public CompletableFuture<ResultResponse> request(MetaDataType data) {\n        final GeneratedMessageV3 message = this.messageConverter.toMessage(data);\n        if (!(message instanceof PAgentInfo)) {\n            throw new IllegalArgumentException(\"unsupported message \" + data);\n        }\n\n        final PAgentInfo pAgentInfo = (PAgentInfo) message;\n\n        CompletableFutureObserver<PResult, ResultResponse> observer = new CompletableFutureObserver<>(PResults::toResponse);\n        this.agentInfoStub.requestAgentInfo(pAgentInfo, observer);\n        return observer.future();\n    }\n\n\n    @Override\n    public void close() {\n        if (shutdown) {\n            return;\n        }\n        this.shutdown = true;\n\n        logger.info(\"Stop {}, channel={}\", name, managedChannel);","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/sender/grpc/AgentGrpcDataSender.java#L73-L109","documentation":"AgentGrpcDataSender.request(MetaDataType) converts the input via a message converter and requires the resulting protobuf message to be PAgentInfo; anything else means the wrong DataType was routed to the agent-info sender. It throws IllegalArgumentException naming the offending object.","triggerScenarios":"Calling request(data) with a MetaDataType whose converted GeneratedMessageV3 is not a PAgentInfo — e.g. passing ApiMetaData or SqlMetaData to the AgentGrpcDataSender instead of AgentInfo.","commonSituations":"Wiring the wrong gRPC sender bean/stub in custom code, a refactored converter mapping a new metadata type incorrectly, or calling request() with mixed metadata from a queue meant only for agent info.","solutions":["Ensure only AgentInfo (MetaDataType converting to PAgentInfo) is passed to AgentGrpcDataSender.request","Route other metadata types to their dedicated senders (e.g. metadata sender / SpanGrpcDataSender)","Verify the configured MessageConverter<MetaDataType,...> maps the type to PAgentInfo"],"exampleFix":"// before\nagentSender.request(apiMetaData);\n// after\nmetadataSender.request(apiMetaData);\nagentSender.request(agentInfo);","handlingStrategy":"type-guard","validationCode":"if (!(messageConverter.toMessage(data) instanceof PAgentInfo)) { throw new IllegalArgumentException(\"AgentGrpcDataSender requires AgentInfo data\"); }","typeGuard":"GeneratedMessageV3 msg = messageConverter.toMessage(data);\nif (msg instanceof PAgentInfo pAgentInfo) { /* safe to send */ }","tryCatchPattern":"try { return agentSender.request(data); } catch (IllegalArgumentException e) { log.error(\"Wrong data type for agent sender: {}\", data, e); throw; }","preventionTips":["Keep one sender per metadata type and route via typed interfaces","Add unit tests asserting converter output types per sender","Avoid generic MetaDataType queues feeding a single sender"],"tags":["java","grpc","type-mismatch"],"backgroundTag":"type-mismatch","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}