Skip to content

serviceName is blank引发频繁UNHEALTHY #868

@xiaomudk

Description

@xiaomudk

What version of nacos-sdk-go are you using?

nacos-sdk-go v2.3.1

What version of nacos-sever are you using?

2.4.3

What version of Go are you using (go version)?

go version go1.19.13 linux/amd64

What operating system (Linux, Windows, …) and version?

Linux

What did you do?

If possible, provide a recipe for reproducing the error.

	err := namingClient.Subscribe(vo.SubscribeParam{
		ServiceName: "",          // ServiceName 传空
		GroupName:   "group-a", // default value is DEFAULT_GROUP
		Clusters:    []string{"cluster-a"}, // default value is DEFAULT
		SubscribeCallback: func (services []model.Instance, err error) {
			log.Printf("\n\n callback return services:%s \n\n", utils.ToJsonString(services))
		},
	})

当ServiceName为空时,会导致整个client变为UNHEALTHY,导致其他Service订阅出错,并且会频繁触发reconnect

2026-01-07T11:13:14.641+0800    DEBUG   rpc/grpc_connection.go:69       1767755487446_10.69.27.241_36012 grpc request nacos server success, request=metadata:<type:"SubscribeServiceRequest" clientIp:"10.69.27.241" headers:<key:"app" value:"" > > body:<value:"{\"requestId\":\"\",\"namespace\":\"public\",\"serviceName\":\"\",\"groupName\":\"fat\",\"module\":\"naming\",\"subscribe\":true,\"clusters\":\"fat\"}" > , response={"resultCode":500,"errorCode":500,"message":"Param 'serviceName' is illegal, serviceName is blank","success":false}
2026-01-07T11:13:14.642+0800    ERROR   rpc/rpc_client.go:650   Send request fail, request=SubscribeServiceRequest, body={"requestId":"","namespace":"public","serviceName":"","groupName":"fat","module":"naming","subscribe":true,"clusters":"fat"}, retryTimes=1, error=Param 'serviceName' is illegal, serviceName is blank
github.com/nacos-group/nacos-sdk-go/v2/common/remote/rpc.(*RpcClient).Request
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/common/remote/rpc/rpc_client.go:624
github.com/nacos-group/nacos-sdk-go/v2/clients/naming_client/naming_grpc.(*NamingGrpcProxy).requestToServer
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/clients/naming_client/naming_grpc/naming_grpc_proxy.go:88
github.com/nacos-group/nacos-sdk-go/v2/clients/naming_client/naming_grpc.(*NamingGrpcProxy).Subscribe
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/clients/naming_client/naming_grpc/naming_grpc_proxy.go:183
github.com/nacos-group/nacos-sdk-go/v2/clients/naming_client/naming_grpc.(*ConnectionEventListener).redoSubscribe
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/clients/naming_client/naming_grpc/connection_event_listener.go:68
github.com/nacos-group/nacos-sdk-go/v2/clients/naming_client/naming_grpc.(*ConnectionEventListener).OnConnected
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/clients/naming_client/naming_grpc/connection_event_listener.go:47
github.com/nacos-group/nacos-sdk-go/v2/common/remote/rpc.(*RpcClient).notifyConnectionEvent
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/common/remote/rpc/rpc_client.go:498
github.com/nacos-group/nacos-sdk-go/v2/common/remote/rpc.(*RpcClient).Start.func1
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/common/remote/rpc/rpc_client.go:280
runtime.goexit
        /root/.g/go/src/runtime/asm_amd64.s:1594
2026-01-07T11:13:14.743+0800    DEBUG   rpc/grpc_connection.go:69       1767755487446_10.69.27.241_36012 grpc request nacos server success, request=metadata:<type:"SubscribeServiceRequest" clientIp:"10.69.27.241" headers:<key:"app" value:"" > > body:<value:"{\"requestId\":\"\",\"namespace\":\"public\",\"serviceName\":\"\",\"groupName\":\"fat\",\"module\":\"naming\",\"subscribe\":true,\"clusters\":\"fat\"}" > , response={"resultCode":500,"errorCode":500,"message":"Param 'serviceName' is illegal, serviceName is blank","success":false}
2026-01-07T11:13:14.744+0800    ERROR   rpc/rpc_client.go:650   Send request fail, request=SubscribeServiceRequest, body={"requestId":"","namespace":"public","serviceName":"","groupName":"fat","module":"naming","subscribe":true,"clusters":"fat"}, retryTimes=2, error=Param 'serviceName' is illegal, serviceName is blank
github.com/nacos-group/nacos-sdk-go/v2/common/remote/rpc.(*RpcClient).Request
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/common/remote/rpc/rpc_client.go:624
github.com/nacos-group/nacos-sdk-go/v2/clients/naming_client/naming_grpc.(*NamingGrpcProxy).requestToServer
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/clients/naming_client/naming_grpc/naming_grpc_proxy.go:88
github.com/nacos-group/nacos-sdk-go/v2/clients/naming_client/naming_grpc.(*NamingGrpcProxy).Subscribe
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/clients/naming_client/naming_grpc/naming_grpc_proxy.go:183
github.com/nacos-group/nacos-sdk-go/v2/clients/naming_client/naming_grpc.(*ConnectionEventListener).redoSubscribe
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/clients/naming_client/naming_grpc/connection_event_listener.go:68
github.com/nacos-group/nacos-sdk-go/v2/clients/naming_client/naming_grpc.(*ConnectionEventListener).OnConnected
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/clients/naming_client/naming_grpc/connection_event_listener.go:47
github.com/nacos-group/nacos-sdk-go/v2/common/remote/rpc.(*RpcClient).notifyConnectionEvent
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/common/remote/rpc/rpc_client.go:498
github.com/nacos-group/nacos-sdk-go/v2/common/remote/rpc.(*RpcClient).Start.func1
        /root/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.3.1/common/remote/rpc/rpc_client.go:280
runtime.goexit
        /root/.g/go/src/runtime/asm_amd64.s:1594
2026-01-07T11:13:14.844+0800    WARN    rpc/rpc_client.go:639   Request retry exhausted, status changed: RUNNING -> UNHEALTHY, request=SubscribeServiceRequest, connectionId=1767755487446_10.69.27.241_36012

What did you expect to see?

如果是客户端参数错误,应该Subscribe就报错, 或者定时重试。不应该影响到client的状态

What did you see instead?

当ServiceName为空时,会导致整个client变为UNHEALTHY,导致其他Service订阅出错,并且会频繁触发reconnect

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions