milvus-sdk-java icon indicating copy to clipboard operation
milvus-sdk-java copied to clipboard

[grpc-default-executor-0] ERROR n.d.b.g.c.nameresolver.DiscoveryClientNameResolver - No servers found for xxx

Open chaizhilei opened this issue 3 years ago • 5 comments

项目主要依赖如下 spring-boot:2.3.7-RELEASE milvus-sdk-java :2.1.0-beta4 grpc-core:1.34.1 grcpc-client-spring-boot-autoconfigure: 2.12.0.RELEASE

milvus配置类

@Configuration
public class MilvusConfig {

    @Value("${milvus.host}")
    private String host;
    @Value("${milvus.port}")
    private Integer port;

    @Bean
    public MilvusServiceClient milvusServiceClient() {
        ConnectParam connectParam = ConnectParam.newBuilder()
                .withHost(host)
                .withPort(port)
                .build();
        return new MilvusServiceClient(connectParam);
    }
}

当我不加入grcpc-client-spring-boot-autoconfigure是使用MilvusServiceClient查询没有问题。 当加入grcpc-client-spring-boot-autoconfigure后,项目正常能启动,但是当查询的时候报异常,异常信息如下:

2022-08-04 15:27:54.101 [] [grpc-default-executor-0] ERROR n.d.b.g.c.nameresolver.DiscoveryClientNameResolver - No servers found for 10.24.16.36:19530
2022-08-04 15:27:54.101 [] [grpc-default-executor-0] WARN  io.grpc.internal.ManagedChannelImpl - [Channel<7>: (10.24.16.36:19530)] Failed to resolve name. status=Status{code=UNAVAILABLE, description=No servers found for 10.24.16.36:19530, cause=null}

使用arthas调试定位到如下异常:

161659594081_ pic

chaizhilei avatar Aug 04 '22 07:08 chaizhilei

说实话我没用过grcpc-client-spring-boot-autoconfigure,看报错的提示像是访问不到那个地址。 看一下下面这个trouble-shooting是否能有帮助: https://yidongnan.github.io/grpc-spring-boot-starter/en/trouble-shooting.html

yhmo avatar Aug 10 '22 08:08 yhmo

我解决了我项目中的这个问题,修改milvus-sdk-java中ManagedChannelBuilder创建链接的方式,将原来的forAddress修改为forTarget就可以了。感谢支持。 image

chaizhilei avatar Aug 10 '22 08:08 chaizhilei

我解决了我项目中的这个问题,修改milvus-sdk-java中ManagedChannelBuilder创建链接的方式,将原来的forAddress修改为forTarget就可以了。感谢支持。 image

你这个改动 connectParam.getTarget() 这里返回的是一个地址字符串么?是不是 “10.24.16.36:19530” 这样的字符串?

yhmo avatar Aug 11 '22 03:08 yhmo

我解决了我项目中的这个问题,修改milvus-sdk-java中ManagedChannelBuilder创建链接的方式,将原来的forAddress修改为forTarget就可以了。感谢支持。 image

你这个改动 connectParam.getTarget() 这里返回的是一个地址字符串么?是不是 “10.24.16.36:19530” 这样的字符串?

   @Bean
    public MilvusServiceClient milvusServiceClient() {
        ConnectParam connectParam = ConnectParam.newBuilder().withTarget("static://10.24.16.36:19530").build();
        return new MilvusServiceClient(connectParam);
    }

换了个协议

chaizhilei avatar Aug 11 '22 03:08 chaizhilei

我解决了我项目中的这个问题,修改milvus-sdk-java中ManagedChannelBuilder创建链接的方式,将原来的forAddress修改为forTarget就可以了。感谢支持。 image

你这个改动 connectParam.getTarget() 这里返回的是一个地址字符串么?是不是 “10.24.16.36:19530” 这样的字符串?

   @Bean
    public MilvusServiceClient milvusServiceClient() {
        ConnectParam connectParam = ConnectParam.newBuilder().withTarget("static://10.24.16.36:19530").build();
        return new MilvusServiceClient(connectParam);
    }

换了个协议

你这个改动其实可以提个pr我觉得

yhmo avatar Aug 23 '22 02:08 yhmo