dubbo-go icon indicating copy to clipboard operation
dubbo-go copied to clipboard

使用dubbo协议,消费端会无限等待,服户端会出现error:EOF错误

Open dnjat opened this issue 11 months ago • 1 comments

Environment

  • Server:

  • Client:

  • Protocol:

  • Registry:

Issue description

Logs

Click me to check logs
Copy logs to here.

服务端注册

func RegisterDubboRpcServer(greeter *GreeterService) {
	ins, err := dubbo.NewInstance(
		dubbo.WithName("go-blog.dubbo.rgpc"),
		dubbo.WithRegistry(
			registry.WithNacos(),
			registry.WithAddress("192.168.14.137:8848"),
			registry.WithNamespace("dubbo-go"),
			registry.WithUsername("nacos"),
			registry.WithPassword("nacos"),
		),
		//dubbo.WithProtocol(
		//	protocol.WithDubbo(),
		//	protocol.WithPort(20001)),
	)
	if err != nil {
		panic(err)
	}
	srv, err := ins.NewServer(
		server.WithServerProtocol(
			protocol.WithDubbo(),
			protocol.WithPort(20001),
		),
	)
	if err != nil {
		panic(err)
	}
	if err := greet.RegisterGreeterHandler(srv, greeter); err != nil {
		panic(err)
	}
	// 用来测试的,换一种注册方式
	//if err := srv.Register(greeter, nil, server.WithInterface("GreeterService"), server.WithSerialization(constant.Hessian2Serialization)); err != nil {
	//	panic(err)
	//}

	if err := srv.Serve(); err != nil {
		logger.Error(err)
	}
}

客户端注册

func RegisterDubboRpcClient() {
	ins, err := dubbo.NewInstance(
		dubbo.WithName("go-wxmc.dubbo.rgpc"),
		dubbo.WithRegistry(
			registry.WithNacos(),
			registry.WithAddress("192.168.14.137:8848"),
			registry.WithNamespace("dubbo-go"),
			registry.WithUsername("nacos"),
			registry.WithPassword("nacos"),
		),
	)
	if err != nil {
		panic(err)
	}
	// configure the params that only client layer cares
	cli, err := ins.NewClient(
		client.WithClientProtocolDubbo(),
		client.WithClientSerialization(constant.Hessian2Serialization),
	)
	if err != nil {
		panic(err)
	}

	svc, err := v1.NewGreeter(cli)
	if err != nil {
		panic(err)
	}

       //这句调用后会出现无限等待
	resp, err := svc.SayHello(context.Background(), &v1.HelloRequest{Name: "dubbo rpc"})

	if err != nil {
		//fmt.Printf("098FB268", err)
		panic(err)
	}
	fmt.Printf("C272AB2E", resp)
}

客户端调用后,进入无限等待 服务端会出现错误:

2025-05-05 21:38:15	INFO	getty/listener.go:220	session{session session-closed, Read Bytes: 381, Write Bytes: 389, Read Pkgs: 22, Write Pkgs: 22} is closing......
2025-05-05 21:38:15	INFO	getty/listener.go:212	session{session session-closed, Read Bytes: 381, Write Bytes: 389, Read Pkgs: 22, Write Pkgs: 22} got error{read tcp 10.100.2.2:20001->10.100.2.2:64621: wsarecv: An existing connection was forcibly closed by the remote host.}, will be closed.
2025-05-05 21:38:15	INFO	getty/listener.go:212	session{session session-closed, Read Bytes: 416, Write Bytes: 424, Read Pkgs: 24, Write Pkgs: 24} got error{read tcp 10.100.2.2:20001->10.100.2.2:64552: wsarecv: An existing connection was forcibly closed by the remote host.}, will be closed.
2025-05-05 21:38:15	INFO	getty/listener.go:220	session{session session-closed, Read Bytes: 416, Write Bytes: 424, Read Pkgs: 24, Write Pkgs: 24} is closing......
2025-05-05 21:38:15	INFO	getty/listener.go:220	session{session session-closed, Read Bytes: 381, Write Bytes: 389, Read Pkgs: 22, Write Pkgs: 22} is closing......
2025-05-05 21:38:15	INFO	getty/listener.go:212	session{session session-closed, Read Bytes: 381, Write Bytes: 389, Read Pkgs: 22, Write Pkgs: 22} got error{read tcp 10.100.2.2:20001->10.100.2.2:64648: wsarecv: An existing connection was forcibly closed by the remote host.}, will be closed.
2025-05-05 21:38:15	INFO	getty/listener.go:220	session{session session-closed, Read Bytes: 381, Write Bytes: 389, Read Pkgs: 22, Write Pkgs: 22} is closing......
2025-05-05 21:38:20	INFO	getty/listener.go:203	got session:session {server:TCP_SERVER:19:10.100.2.2:20001<->10.100.2.2:49687}, Read Bytes: 0, Write Bytes: 0, Read Pkgs: 0, Write Pkgs: 0
2025-05-05 21:38:20	INFO	getty/listener.go:203	got session:session {server:TCP_SERVER:20:10.100.2.2:20001<->10.100.2.2:49688}, Read Bytes: 0, Write Bytes: 0, Read Pkgs: 0, Write Pkgs: 0
2025-05-05 21:38:23	ERROR	dubbo/dubbo_codec.go:209	pkg.Unmarshal(len(@data):0) = error:EOF
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.unmarshalRequestBody
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/hessian.go:255
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.HessianSerializer.Unmarshal
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/hessian.go:57
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.(*ProtocolCodec).Decode
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/codec.go:190
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.(*DubboPackage).Unmarshal
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/package.go:93
dubbo.apache.org/dubbo-go/v3/protocol/dubbo.(*DubboCodec).decodeRequest
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/dubbo_codec.go:200
dubbo.apache.org/dubbo-go/v3/protocol/dubbo.(*DubboCodec).Decode
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/dubbo_codec.go:170
dubbo.apache.org/dubbo-go/v3/remoting/getty.(*RpcServerPackageHandler).Read
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/remoting/getty/readwriter.go:112
github.com/apache/dubbo-getty.(*session).handleTCPPackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:698
github.com/apache/dubbo-getty.(*session).handlePackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:614
runtime.goexit
	D:/Program Files/Go/src/runtime/asm_amd64.s:1700
2025-05-05 21:38:23	WARN	[email protected]/session.go:614	{server:TCP_SERVER:20:10.100.2.2:20001<->10.100.2.2:49688}, [session.handleTCPPackage] = len{0}, error:EOF
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.unmarshalRequestBody
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/hessian.go:255
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.HessianSerializer.Unmarshal
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/hessian.go:57
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.(*ProtocolCodec).Decode
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/codec.go:190
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.(*DubboPackage).Unmarshal
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/package.go:93
dubbo.apache.org/dubbo-go/v3/protocol/dubbo.(*DubboCodec).decodeRequest
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/dubbo_codec.go:200
dubbo.apache.org/dubbo-go/v3/protocol/dubbo.(*DubboCodec).Decode
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/dubbo_codec.go:170
dubbo.apache.org/dubbo-go/v3/remoting/getty.(*RpcServerPackageHandler).Read
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/remoting/getty/readwriter.go:112
github.com/apache/dubbo-getty.(*session).handleTCPPackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:698
github.com/apache/dubbo-getty.(*session).handlePackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:614
runtime.goexit
	D:/Program Files/Go/src/runtime/asm_amd64.s:1700
dubbo.apache.org/dubbo-go/v3/protocol/dubbo.(*DubboCodec).decodeRequest
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/dubbo_codec.go:211
dubbo.apache.org/dubbo-go/v3/protocol/dubbo.(*DubboCodec).Decode
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/dubbo_codec.go:170
dubbo.apache.org/dubbo-go/v3/remoting/getty.(*RpcServerPackageHandler).Read
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/remoting/getty/readwriter.go:112
github.com/apache/dubbo-getty.(*session).handleTCPPackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:698
github.com/apache/dubbo-getty.(*session).handlePackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:614
runtime.goexit
	D:/Program Files/Go/src/runtime/asm_amd64.s:1700
dubbo.apache.org/dubbo-go/v3/protocol/dubbo.(*DubboCodec).Decode
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/dubbo_codec.go:172
dubbo.apache.org/dubbo-go/v3/remoting/getty.(*RpcServerPackageHandler).Read
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/remoting/getty/readwriter.go:112
github.com/apache/dubbo-getty.(*session).handleTCPPackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:698
github.com/apache/dubbo-getty.(*session).handlePackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:614
runtime.goexit
	D:/Program Files/Go/src/runtime/asm_amd64.s:1700
dubbo.apache.org/dubbo-go/v3/remoting/getty.(*RpcServerPackageHandler).Read
	F:/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/remoting/getty/readwriter.go:114
github.com/apache/dubbo-getty.(*session).handleTCPPackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:698
github.com/apache/dubbo-getty.(*session).handlePackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:614
runtime.goexit
	D:/Program Files/Go/src/runtime/asm_amd64.s:1700
github.com/apache/dubbo-getty.(*session).handleTCPPackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:706
github.com/apache/dubbo-getty.(*session).handlePackage
	F:/go/pkg/mod/github.com/apache/[email protected]/session.go:614
runtime.goexit
	D:/Program Files/Go/src/runtime/asm_amd64.s:1700

这个是老框架了,应该不是bug,是我使用上的错误吧.

dnjat avatar May 05 '25 13:05 dnjat

Hessian2 序列化,你的自定义pojo 有注册到 Hessian2 吗, 像这样:

hessian.RegisterPOJO(&common.URL{})

FoghostCn avatar May 14 '25 06:05 FoghostCn