jockercheng91 opened a new issue, #15968: URL: https://github.com/apache/dubbo/issues/15968
### 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 Version: 3.3.0 - APISIX Version: Unknown (tested with HTTP/1.1 enabled) - JDK Version: 1.8.0_452 - Framework: Spring Boot 2.7.18 - Protocol: Triple (tri) ### Steps to reproduce this issue step1: Deploy APISIX Gateway and configure service discovery via Nacos Follow the official documentation to deploy APISIX and complete service discovery with Nacos: https://cn.dubbo.apache.org/zh-cn/blog/2024/04/22/%E4%BD%BF%E7%94%A8-apache-apisix-%E4%BB%A3%E7%90%86-dubbo-%E6%9C%8D%E5%8A%A1triple%E5%8D%8F%E8%AE%AE/ Key configurations: - APISIX listens on 10.216.23.40:8090. - Route rule: Proxy requests to /com.example.edu.initializer.samples.dubbo3.DemoService/* to the backend Dubbo Triple service (discovered via Nacos). step2: Verify APISIX proxy works via curl Execute the following curl command and get a successful response: ``` curl http://10.216.23.40:8090/com.example.edu.initializer.samples.dubbo3.DemoService/sayHello -i ``` Curl response (successful): ``` HTTP/1.1 200 OK Content-Type: application/json Content-Length: 12 Connection: keep-alive alt-svc: h2=":24395" Server: APISIX/3.2.2 "Hello null" ``` step3:Call via @DubboReference annotation and trigger exception Consumer code with @DubboReference: ``` @DubboReference( interfaceClass = DemoService.class, protocol = "tri", url = "tri://10.216.23.40:8090/com.example.edu.initializer.samples.dubbo3.DemoService/sayHello" ) private DemoService demoService; ``` Trigger the call in consumer application: ``` String result = demoService.sayHello("test"); ``` exception happened: ``` Caused by: org.apache.dubbo.rpc.RpcException: java.util.concurrent.ExecutionException: org.apache.dubbo.rpc.StatusRpcException: CANCELLED at org.apache.dubbo.rpc.AsyncRpcResult.getAppResponse(AsyncRpcResult.java:181) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.AsyncRpcResult.recreate(AsyncRpcResult.java:246) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.proxy.InvocationUtil.invoke(InvocationUtil.java:64) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:81) ~[dubbo-3.3.0.jar:3.3.0] at com.iflytek.edu.initializer.samples.dubbo3.DemoServiceDubboProxy0.sayHello(DemoServiceDubboProxy0.java) ~[classes/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_452] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_452] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_452] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_452] at org.apache.dubbo.config.spring.util.LazyTargetInvocationHandler.invoke(LazyTargetInvocationHandler.java:54) ~[dubbo-3.3.0.jar:3.3.0] at com.iflytek.edu.initializer.samples.dubbo3.DemoServiceDubboProxy0.sayHello(DemoServiceDubboProxy0.java) ~[classes/:na] at com.iflytek.edu.initializer.samples.dubbo3.consumer.base.ConsumerApplication.lambda$commandLineRunner$0(ConsumerApplication.java:34) [classes/:na] at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:765) [spring-boot-2.7.18.jar:2.7.18] ... 14 common frames omitted Caused by: java.util.concurrent.ExecutionException: org.apache.dubbo.rpc.StatusRpcException: CANCELLED at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) ~[na:1.8.0_452] at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908) ~[na:1.8.0_452] at org.apache.dubbo.rpc.AsyncRpcResult.getAppResponse(AsyncRpcResult.java:172) ~[dubbo-3.3.0.jar:3.3.0] ... 26 common frames omitted Caused by: org.apache.dubbo.rpc.StatusRpcException: CANCELLED at org.apache.dubbo.rpc.TriRpcStatus.asException(TriRpcStatus.java:260) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.protocol.tri.call.UnaryClientCallListener.onClose(UnaryClientCallListener.java:53) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.protocol.tri.call.TripleClientCall.onComplete(TripleClientCall.java:126) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.protocol.tri.call.TripleClientCall.onCancelByRemote(TripleClientCall.java:112) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.protocol.tri.call.TripleClientCall.onClose(TripleClientCall.java:143) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.common.threadpool.serial.SerializingExecutor.run(SerializingExecutor.java:105) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.common.threadpool.ThreadlessExecutor$RunnableWrapper.run(ThreadlessExecutor.java:151) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.common.threadpool.ThreadlessExecutor.waitAndDrain(ThreadlessExecutor.java:77) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.AsyncRpcResult.get(AsyncRpcResult.java:220) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.protocol.AbstractInvoker.waitForResultIfSync(AbstractInvoker.java:293) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:195) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:71) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.filter.RpcExceptionFilter.invoke(RpcExceptionFilter.java:40) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:197) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.protocol.ReferenceCountInvokerWrapper.invoke(ReferenceCountInvokerWrapper.java:106) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invokeWithContext(AbstractClusterInvoker.java:412) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:82) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:366) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.router.RouterSnapshotFilter.invoke(RouterSnapshotFilter.java:46) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:109) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.support.MetricsClusterFilter.invoke(MetricsClusterFilter.java:57) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:53) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.spring.security.filter.ContextHolderParametersSelectedTransferFilter.invoke(ContextHolderParametersSelectedTransferFilter.java:40) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.metrics.filter.MetricsFilter.invoke(MetricsFilter.java:86) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.support.MetricsConsumerFilter.invoke(MetricsConsumerFilter.java:38) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.support.ConsumerClassLoaderFilter.invoke(ConsumerClassLoaderFilter.java:40) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter.invoke(ConsumerContextFilter.java:119) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:197) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster$ClusterFilterInvoker.invoke(AbstractCluster.java:101) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:107) ~[dubbo-3.3.0.jar:3.3.0] at org.apache.dubbo.rpc.cluster.support.wrapper.ScopeClusterInvoker.invoke(ScopeClusterInvoker.java:156) ~[dubbo-3.3.0.jar:3.3.0] ... 25 common frames omitted ``` apisix acesslog: ``` 172.16.12.131 - - [05/Jan/2026:23:18:37 +0800] - "PRI * HTTP/2.0" 400 229 0.270 "-" "-" - - - "://" ``` ### What you expected to happen The @DubboReference annotation should correctly send Triple protocol requests (adapted to HTTP/1.1 via configuration) to the APISIX gateway, and successfully receive the response from the backend service. ### Anything else _No response_ ### Are you willing to submit a pull request to fix on your own? - [ ] 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]
