java client 2.6.0 通过 StorageClient 连接storage 报错

代码如下

 // input params are the metad's ip and port
        StorageClient client = new StorageClient("10.32.147.37", 9779);
        try {
            client.connect();
        } catch (Exception e) {
            LOGGER.error("storage client connect error, ", e);
            client.close();
            System.exit(1);
        }
        scanVertex(client);
        scanEdge(client);

        client.close();

异常如下

ERROR [main] - storage client connect error, 
com.facebook.thrift.TApplicationException: Method name verifyClientVersion not found
	at com.facebook.thrift.TApplicationException.read(TApplicationException.java:133)
	at com.vesoft.nebula.meta.MetaService$Client.recv_verifyClientVersion(MetaService.java:4464)
	at com.vesoft.nebula.meta.MetaService$Client.verifyClientVersion(MetaService.java:4439)
	at com.vesoft.nebula.client.meta.MetaClient.getClient(MetaClient.java:116)
	at com.vesoft.nebula.client.meta.MetaClient.doConnect(MetaClient.java:104)
	at com.vesoft.nebula.client.meta.MetaClient.connect(MetaClient.java:93)
	at com.vesoft.nebula.client.meta.MetaManager.<init>(MetaManager.java:56)
	at com.vesoft.nebula.client.storage.StorageClient.connect(StorageClient.java:82)
	at com.vesoft.nebula.examples.StorageClientExample.main(StorageClientExample.java:30)

服务端是2.6.1版本

这里显示的是。。要配置 meta 的地址,你配置的应该是 storage 的地址,:thinking: 我记得是 meta 连接 storage,捞数据的

2 个赞

非常感谢,的确是的,我改成meta的地址就可以连接上了,但是执行下面的scan语句的时候报如下错误

ERROR [main] - List Spaces Error: java.net.SocketTimeoutException: connect timed out
ERROR [main] - java.net.SocketTimeoutException: connect timed out
ERROR [main] - List Spaces Error: Cannot write to null outputStream
ERROR [main] - Cannot write to null outputStream
Exception in thread "main" java.lang.IllegalArgumentException: Space:test does not exist.
	at com.vesoft.nebula.client.meta.MetaManager.getPartsAlloc(MetaManager.java:295)
	at com.vesoft.nebula.client.meta.MetaManager.getSpaceParts(MetaManager.java:277)
	at com.vesoft.nebula.client.storage.StorageClient.scanVertex(StorageClient.java:358)
	at com.vesoft.nebula.client.storage.StorageClient.scanVertex(StorageClient.java:243)
	at com.vesoft.nebula.client.storage.StorageClient.scanVertex(StorageClient.java:162)
	at com.vesoft.nebula.client.storage.StorageClient.scanVertex(StorageClient.java:100)
	at com.vesoft.nebula.examples.StorageClientExample.scanVertex(StorageClientExample.java:56)
	at com.vesoft.nebula.examples.StorageClientExample.main(StorageClientExample.java:44)

space test我已经创建过了,这个是必须连上所有的meta集群的机器访问才可以吗?

因为我这边是2.5 升级到2.6 的,有点不理解 这个api具体是干嘛用的,什么场景会使用

再次感谢

你 space 是咋用的啊。:thinking: 是不是和这个用户遇到的问题类似

感觉不太一样,我运行的这个是官方的例子com.vesoft.nebula.examples.StorageClientExample 这个类,StorageClient 这个类 我看没法提前单独执行 use space语句

我记得之前研发同学给我科普是要所有的 meta 的,其他问题的话,需要研发来回复了

看到2.6.1的client代码中加入如下验证版本的代码,那就是说 2.6.1版本的java客户端,是不兼容2.5.0的服务端对吧

// check if client version matches server version
            VerifyClientVersionResp resp =
                    client.verifyClientVersion(new VerifyClientVersionReq());
            if (resp.error_code != ErrorCode.SUCCEEDED) {
                client.getInputProtocol().getTransport().close();
                throw new ClientServerIncompatibleException(new String(resp.getError_msg(),
                        Charsets.UTF_8));
            }

嗯,v2.6.1 版本不能链接 2.5 的服务,但是 v2.5 的客户端可以连 v2.6 的服务。

非常感谢

1 个赞

如果问题解决了的话,可以勾选你自己的回复为解决方案哈~

已勾选

谢谢 pfchang