Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dubbo 3.2.0 Reactor模式运行报错 #12175

Closed
lispking opened this issue Apr 24, 2023 · 4 comments
Closed

Dubbo 3.2.0 Reactor模式运行报错 #12175

lispking opened this issue Apr 24, 2023 · 4 comments
Labels
type/bug Bugs to being fixed

Comments

@lispking
Copy link

Environment

  • Dubbo version: 3.2.0
  • Operating System version: mac
  • Java version: 17

Steps to reproduce this issue

  1. proto文件使用官网demo如下:
syntax = "proto3";

option java_multiple_files = true;
option java_package = "org.apache.dubbo.hello";
option java_outer_classname = "HelloWorldProto";
option objc_class_prefix = "HLW";

package helloworld;

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

service Greeter{
  rpc greet(HelloRequest) returns (HelloReply);
}
  1. 配置文件定义如下:
server:
  port: 8000

dubbo:
  application:
    name: demo-api
    qos-port: 33333
  protocol:
    name: tri
    port: 50052
  registry:
    address: zookeeper://${zookeeper.address:127.0.0.1}:2181
  1. pom.xml代码生成器用的官网代码如下:
<plugins>
            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <version>0.6.1</version>
                <configuration>
                    <protocArtifact>com.google.protobuf:protoc:3.19.4:exe:${os.detected.classifier}</protocArtifact>
                    <protocPlugins>
                        <protocPlugin>
                            <id>dubbo</id>
                            <groupId>org.apache.dubbo</groupId>
                            <artifactId>dubbo-compiler</artifactId>
                            <version>${dubbo.version}</version>
                            <mainClass>org.apache.dubbo.gen.tri.reactive.ReactorDubbo3TripleGenerator</mainClass>
                        </protocPlugin>
                    </protocPlugins>
                    <protoSourceRoot>src/main/proto</protoSourceRoot>
                    <outputDirectory>src/main/java</outputDirectory>
                    <clearOutputDirectory>false</clearOutputDirectory>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
  1. 客户调用代码如下:
@RestController
public class DemoController {
    @DubboReference
    public Greeter demoService;

    @GetMapping("/hello/{name}")
    public Mono<HelloReply> sayHello(@PathVariable String name) {
        return demoService.greet(Mono.just(HelloRequest.newBuilder().setName(name).build()));
    }
}
  1. 运行代码,请求/hello/xxx会报以下错误
2023-04-24T14:36:19.577+08:00 ERROR 75297 --- [ttp@2a2843ec-29] o.a.d.r.p.tri.call.TripleClientCall      :  [DUBBO] Serialize triple request failed, service=org.apache.dubbo.hello.Greeter method=org.apache.dubbo.rpc.model.ReflectionMethodDescriptor@6da77aa2, dubbo version: 3.2.0, current host: 192.168.1.10, error code: 4-10. This may be caused by , go to https://dubbo.apache.org/faq/4/10 to find instructions. 

java.lang.ClassCastException: class reactor.core.publisher.MonoJust cannot be cast to class com.google.protobuf.Message (reactor.core.publisher.MonoJust and com.google.protobuf.Message are in unnamed module of loader 'app')
	at org.apache.dubbo.rpc.protocol.tri.ReflectionPackableMethod.lambda$static$0(ReflectionPackableMethod.java:51) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.protocol.tri.ReflectionPackableMethod$PbArrayPacker.pack(ReflectionPackableMethod.java:464) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.model.PackableMethod.packRequest(PackableMethod.java:78) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.protocol.tri.call.TripleClientCall.sendMessage(TripleClientCall.java:177) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.protocol.tri.observer.ClientCallToObserverAdapter.onNext(ClientCallToObserverAdapter.java:44) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.protocol.tri.TripleInvoker.invokeUnary(TripleInvoker.java:247) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.protocol.tri.TripleInvoker.doInvoke(TripleInvoker.java:140) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.protocol.AbstractInvoker.doInvokeAndReturn(AbstractInvoker.java:242) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:186) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:71) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.metrics.filter.MetricsFilter.invoke(MetricsFilter.java:51) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:331) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:194) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.protocol.ReferenceCountInvokerWrapper.invoke(ReferenceCountInvokerWrapper.java:78) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invokeWithContext(AbstractClusterInvoker.java:380) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:81) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:341) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.router.RouterSnapshotFilter.invoke(RouterSnapshotFilter.java:46) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:331) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:101) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:331) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.support.MetricsClusterFilter.invoke(MetricsClusterFilter.java:51) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:331) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:52) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:331) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.support.ObservationSenderFilter.invoke(ObservationSenderFilter.java:61) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:331) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.spring.security.filter.ContextHolderParametersSelectedTransferFilter.invoke(ContextHolderParametersSelectedTransferFilter.java:41) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:331) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.support.ConsumerClassLoaderFilter.invoke(ConsumerClassLoaderFilter.java:40) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:331) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter.invoke(ConsumerContextFilter.java:118) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:331) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:194) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster$ClusterFilterInvoker.invoke(AbstractCluster.java:91) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:103) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.cluster.support.wrapper.ScopeClusterInvoker.invoke(ScopeClusterInvoker.java:131) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.registry.client.migration.MigrationInvoker.invoke(MigrationInvoker.java:284) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.proxy.InvocationUtil.invoke(InvocationUtil.java:57) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:75) ~[dubbo-3.2.0.jar:3.2.0]
	at org.apache.dubbo.hello.GreeterDubboProxy1.greet(GreeterDubboProxy1.java) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) ~[spring-aop-6.0.7.jar:6.0.7]
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:211) ~[spring-aop-6.0.7.jar:6.0.7]
	at jdk.proxy2/jdk.proxy2.$Proxy64.greet(Unknown Source) ~[na:na]
	at org.example.DemoController.sayHello(DemoController.java:19) ~[classes/:na]
@lispking lispking added the type/bug Bugs to being fixed label Apr 24, 2023
@AlbumenJ
Copy link
Member

@EarthChen PTAL

@icodening
Copy link
Contributor

@lispking
指定一下proxy类型为stub即可,如下

@DubboReference(proxy = CommonConstants.NATIVE_STUB)
public Greeter demoService;

@lispking
Copy link
Author

@lispking 指定一下proxy类型为stub即可,如下

@DubboReference(proxy = CommonConstants.NATIVE_STUB)
public Greeter demoService;

LGTM

@mushuijingjing
Copy link

性能会有提升吗,比如吞吐量、响应时间

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/bug Bugs to being fixed
Projects
None yet
Development

No branches or pull requests

4 participants