[BUG] How does the dubbo plugin proxy the triple protocol (IDL method)
Is there an existing issue for this?
- [X] I have searched the existing issues
Current Behavior
The agent dubbo3 used the IDL method to publish the triple protocol, and the following error occurred when accessing the service:
{
Code: 500,
Message: Internal Server Error
}
And the parameter received by the server is empty It is normal to use an interface to publish the dubbo protocol
Expected Behavior
normal call
Steps To Reproduce
No response
Environment
ShenYu version(s): 2.5.1
dubbo version: 3.1.8
Debug logs
2023-07-24 16:00:34 [shenyu-netty-nio-3] INFO org.apache.shenyu.plugin.apache.dubbo.cache.ApacheDubboConfigCache - buildN init apache dubbo reference success there meteData is :MetaData{id='1683307035019808768', appName='dubbo-demo-personal', contextPath='null', path='/personal/getUser', rpcType='dubbo', serviceName='com.example.dubbo.demo.personal.PersonalService', methodName='getUser', parameterTypes='com.example.dubbo.demo.personal.UserReq', rpcExt='{"loadbalance":"random","retries":2,"timeout":3000,"sent":false,"cluster":"failover","protocol":"tri"}', enabled=true} 2023-07-24 16:00:34 [shenyu-netty-nio-3] INFO org.apache.dubbo.registry.zookeeper.ZookeeperRegistry - [DUBBO] Unsubscribe: tri://192.168.5.53/com.example.dubbo.demo.personal.PersonalService?application=shenyu_proxy&async=true&background=false&category=providers,configurators,routers&check=false&cluster=failover&corethreads=0&dispatcher=direct&dubbo=2.0.2&generic=true&interface=com.example.dubbo.demo.personal.PersonalService&loadbalance=gray&pid=8958&protocol=tri&queues=0&release=3.1.1&retries=2&sent=false&side=consumer&sticky=false&threadpool=shared&threads=2147483647&timeout=3000×tamp=1690185626922&unloadClusterRelated=false, dubbo version: 3.1.1, current host: 192.168.5.53 2023-07-24 16:00:34 [shenyu-netty-nio-3] INFO org.apache.dubbo.registry.support.CacheableFailbackRegistry - [DUBBO] Evicting urls for service com.example.dubbo.demo.personal.PersonalService, size 1, dubbo version: 3.1.1, current host: 192.168.5.53 2023-07-24 16:00:37 [shenyu-shenyu-shared-8] ERROR org.apache.shenyu.web.handler.GlobalErrorHandler - handle error: [afd9aad0-10] Resolved [ShenyuException: org.apache.dubbo.rpc.StatusRpcException: DEADLINE_EXCEEDED : Waiting server-side response timeout by scan timer. start time: 2023-07-24 16:00:34.308, end time: 2023-07-24 16:00:37.339, timeout: 3000 ms, service: com.example.dubbo.demo.personal.PersonalService, method: $invoke RemoteAddress:192.168.5.53:50051] for HTTP POST /personal/getUser org.apache.shenyu.common.exception.ShenyuException: org.apache.dubbo.rpc.StatusRpcException: DEADLINE_EXCEEDED : Waiting server-side response timeout by scan timer. start time: 2023-07-24 16:00:34.308, end time: 2023-07-24 16:00:37.339, timeout: 3000 ms, service: com.example.dubbo.demo.personal.PersonalService, method: $invoke RemoteAddress:192.168.5.53:50051 at org.apache.shenyu.plugin.apache.dubbo.proxy.ApacheDubboProxyService.lambda$genericInvoker$1(ApacheDubboProxyService.java:91) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s): *__checkpoint ⇢ org.apache.shenyu.web.configuration.ErrorHandlerConfiguration$1 [DefaultWebFilterChain] *__checkpoint ⇢ org.apache.shenyu.web.filter.FileSizeFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.apache.shenyu.web.filter.CrossFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.security.web.server.authorization.AuthorizationWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.security.web.server.authentication.logout.LogoutWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain] *__checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain] *__checkpoint ⇢ HTTP POST "/personal/getUser" [ExceptionHandlingWebHandler] Original Stack Trace: at org.apache.shenyu.plugin.apache.dubbo.proxy.ApacheDubboProxyService.lambda$genericInvoker$1(ApacheDubboProxyService.java:91) at reactor.core.publisher.Mono.lambda$onErrorMap$31(Mono.java:3733) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94) at reactor.core.publisher.MonoCompletionStage.lambda$subscribe$0(MonoCompletionStage.java:77) at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:774) at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:750) at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488) at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1990) at org.apache.dubbo.rpc.protocol.dubbo.FutureAdapter.lambda$new$0(FutureAdapter.java:44) at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:774) at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:750) at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488) at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1990) at org.apache.dubbo.rpc.protocol.tri.DeadlineFuture.doReceived(DeadlineFuture.java:133) at org.apache.dubbo.rpc.protocol.tri.DeadlineFuture.access$200(DeadlineFuture.java:40) at org.apache.dubbo.rpc.protocol.tri.DeadlineFuture$TimeoutCheckTask.notifyTimeout(DeadlineFuture.java:181) at org.apache.dubbo.rpc.protocol.tri.DeadlineFuture$TimeoutCheckTask.lambda$run$0(DeadlineFuture.java:168) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.dubbo.rpc.StatusRpcException: DEADLINE_EXCEEDED : Waiting server-side response timeout by scan timer. start time: 2023-07-24 16:00:34.308, end time: 2023-07-24 16:00:37.339, timeout: 3000 ms, service: com.example.dubbo.demo.personal.PersonalService, method: $invoke RemoteAddress:192.168.5.53:50051 at org.apache.dubbo.rpc.TriRpcStatus.asException(TriRpcStatus.java:214) at org.apache.dubbo.rpc.protocol.tri.DeadlineFuture.doReceived(DeadlineFuture.java:134) at org.apache.dubbo.rpc.protocol.tri.DeadlineFuture.access$200(DeadlineFuture.java:40) at org.apache.dubbo.rpc.protocol.tri.DeadlineFuture$TimeoutCheckTask.notifyTimeout(DeadlineFuture.java:181) at org.apache.dubbo.rpc.protocol.tri.DeadlineFuture$TimeoutCheckTask.lambda$run$0(DeadlineFuture.java:168) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
Anything else?
No response
To be precise, when the Dubbo plugin makes generalization calls, if the parameters or return values of the service provider are protobuf type objects, it is not possible to serialize and deserialize JSON and protobuf objects
Can you fix this ?