paxxie2 opened a new issue, #15357: URL: https://github.com/apache/dubbo/issues/15357
### Pre-check - [x] I am sure that all the content I provide is in English. ### Search before asking - [x] I had searched in the [issues](https://github.com/apache/dubbo/issues?q=is%3Aissue) and found no similar issues. ### Apache Dubbo Component Java SDK (apache/dubbo) ### Dubbo Version Dubbo java 3.3.1 , jdk 17, mac os 15.3.2 ### Steps to reproduce this issue 1. use dubbo-samples , https://github.com/apache/dubbo-samples/tree/master/2-advanced/dubbo-samples-generic/dubbo-samples-generic-call 2. add proto file ``` syntax = "proto3"; option java_multiple_files = true; package org.apache.dubbo.samples.tri.grpc; message GreeterRequest { string name = 1; } message GreeterReply { string message = 1; } service Greeter{ rpc Greet(GreeterRequest) returns (GreeterReply); } ``` 3. Provider implement interface ``` public class GreeterImpl extends DubboGreeterTriple.GreeterImplBase{ @Override public GreeterReply greet(GreeterRequest request) { System.out.println("接收来自客户端消息:" + request.getName()); GreeterReply pax = GreeterReply.newBuilder().setMessage("pax").build(); return pax; } public CompletableFuture<GreeterReply> greetAsync(GreeterRequest request) { System.out.println("接收来自客户端消息 async:" + request.getName()); GreeterReply pax = GreeterReply.newBuilder().setMessage("pax").build(); return CompletableFuture.completedFuture(pax); } } ``` 5. Inject beans into the provider. Update dubbo-samples-generic-call-provider resources/spring/generic-provider.xml ``` <bean id="greeterimpl" class="org.apache.dubbo.samples.generic.call.impl.GreeterImpl"/> <dubbo:service interface="org.apache.dubbo.samples.tri.grpc.Greeter" ref="greeterimpl"/> ``` 6. Update consumer. Update dubbo-samples-generic-call-consumer GenericCallConsumer ``` public static void main(String[] args) throws Exception { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName("generic-call-consumer"); RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress("zookeeper://127.0.0.1:2181"); ReferenceConfig<GenericService> referenceConfig = new ReferenceConfig<>(); referenceConfig.setInterface(GenericService.class.getName()); //测试普通接口 referenceConfig.setInterface("org.apache.dubbo.samples.generic.call.api.HelloService"); // 低版本 referenceConfig.setInterface("org.apache.dubbo.samples.tri.grpc.GreeterDubbo$IGreeter"); //高版本 测试proto referenceConfig.setInterface("org.apache.dubbo.samples.tri.grpc.Greeter"); applicationConfig.setRegistry(registryConfig); referenceConfig.setApplication(applicationConfig); referenceConfig.setGeneric(Constants.GENERIC_SERIALIZATION_PROTOBUF); //TODO 为什么要显示设置为 false referenceConfig.setAsync(false); referenceConfig.setTimeout(7000); genericService = referenceConfig.get(); invokeGreet(); //测试 proto } public static void invokeGreet() throws InterruptedException { Map<String, Object> greeterRequest = new HashMap<>(); greeterRequest.put("name", "pax"); String requestString = new Gson().toJson(greeterRequest); Object result = genericService.$invoke("Greet", new String[]{"org.apache.dubbo.samples.tri.grpc.GreeterRequest"}, new Object[]{requestString}); System.err.println("invokeSayHello(return): " + result); } ``` 7. run provider and consumer, then throws exception ``` Exception in thread "main" org.apache.dubbo.rpc.RpcException: Failed to invoke the method Greet in the service org.apache.dubbo.rpc.service.GenericService. Tried 3 times of the providers [10.8.0.2:20880] (1/1) from the registry 127.0.0.1:2181 on the consumer 192.168.31.47 using the dubbo version 3.3.4-SNAPSHOT. Last error is: Failed to invoke remote method: $invoke, provider: dubbo://10.8.0.2:20880/org.apache.dubbo.samples.tri.grpc.Greeter?application=generic-provider&async=false&background=false&category=providers,configurators,routers&check=false&deprecated=false&dubbo=2.0.2&dynamic=true&executor-management-mode=isolation&file-cache=true&generic=false&interface=org.apache.dubbo.samples.tri.grpc.Greeter&methods=biStream,greet,greetAsync,serverStream&pid=7977&prefer.serialization=hessian2,fastjson2&proxy=nativestub&release=3.3.4-SNAPSHOT&service-name-mapping=true&side=provider&sticky=false&timeout=7000&token=e95e27e1-d8ba-46c7-b8bd-934317753155&unloadClusterRelated=false, cause: o rg.apache.dubbo.remoting.RemotingException: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Method.getParameterTypes()" because "method" is null java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Method.getParameterTypes()" because "method" is null at org.apache.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:97) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.protocol.tri.h12.HttpContextFilter.invoke(HttpContextFilter.java:38) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:54) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:41) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.metrics.filter.MetricsFilter.invoke(MetricsFilter.java:86) at org.apache.dubbo.metrics.filter.MetricsProviderFilter.invoke(MetricsProviderFilter.java:37) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.filter.ProfilerServerFilter.invoke(ProfilerServerFilter.java:66) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:191) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:197) at org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:167) at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:110) at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:205) at org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52) at org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:64) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at org.apache.dubbo.common.threadlocal.InternalRunnable.run(InternalRunnable.java:39) at java.base/java.lang.Thread.run(Thread.java:840) at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:126) at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:366) at org.apache.dubbo.rpc.cluster.router.RouterSnapshotFilter.invoke(RouterSnapshotFilter.java:46) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:109) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.cluster.filter.support.MetricsClusterFilter.invoke(MetricsClusterFilter.java:57) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:53) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.spring.security.filter.ContextHolderParametersSelectedTransferFilter.invoke(ContextHolderParametersSelectedTransferFilter.java:40) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.metrics.filter.MetricsFilter.invoke(MetricsFilter.java:86) at org.apache.dubbo.rpc.cluster.filter.support.MetricsConsumerFilter.invoke(MetricsConsumerFilter.java:38) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.cluster.filter.support.ConsumerClassLoaderFilter.invoke(ConsumerClassLoaderFilter.java:40) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter.invoke(ConsumerContextFilter.java:119) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:197) at org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster$ClusterFilterInvoker.invoke(AbstractCluster.java:101) at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:107) at org.apache.dubbo.rpc.cluster.support.wrapper.ScopeClusterInvoker.invoke(ScopeClusterInvoker.java:171) at org.apache.dubbo.registry.client.migration.MigrationInvoker.invoke(MigrationInvoker.java:294) at org.apache.dubbo.rpc.proxy.InvocationUtil.invoke(InvocationUtil.java:64) at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:81) at org.apache.dubbo.samples.tri.grpc.GreeterDubboProxy0.$invoke(GreeterDubboProxy0.java) at org.apache.dubbo.samples.generic.call.GenericCallConsumer.invokeGreet(GenericCallConsumer.java:78) at org.apache.dubbo.samples.generic.call.GenericCallConsumer.main(GenericCallConsumer.java:65) Caused by: java.util.concurrent.ExecutionException: org.apache.dubbo.remoting.RemotingException: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Method.getParameterTypes()" because "method" is null ``` ### What you expected to happen No exceptions and return results ### Anything else _No response_ ### Are you willing to submit a pull request to fix on your own? - [x] Yes I am willing to submit a pull request on my own! ### Code of Conduct - [x] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
