无法加载我刚刚保存的GraphML文件

人气:516 发布:2022-10-16 标签: gremlin tinkerpop tinkerpop3 gremlin-server

问题描述

我正在使用Gremlin服务器。

我将数据库的内容保存在一个XML文件(GraphML)中,代码为:

g.io(path).write().iterate()

要加载文件,我使用以下行:

g.io(path).read().iterate();

然后我收到这个错误:

connection.js:282
        new ResponseError(util.format('Server error: %s (%d)', response.status.message, response.status.code), response.status));
        ^
ResponseError: Server error: For input string: "-2555865115" (500)

此错误来自gremlin服务器。

如果我在xml文件中搜索此值(-2555865115)并删除最后一个字符(-255586511),则问题就解决了。

为什么会发生这种情况?我如何解决此问题?数据库始终保存我必须手动修复的文件。

如果我必须更改Gremlin Server配置文件中的某些内容,您能告诉我应该修改哪个文件以及如何修改吗?因为我以前从来没有这么做过。

我在本地计算机上使用Gremlin服务器只是为了测试,没有任何更改。

编辑:

我将conf/tinkergraph-empty.properties更改为:

gremlin.tinkergraph.vertexIdManager=ANY
gremlin.tinkergraph.edgeIdManager=ANY
gremlin.tinkergraph.vertexPropertyIdManager=ANY

我重新启动,但加载XML文件时遇到相同的错误。

推荐答案

鉴于从数值中删除最后一个整数解决了问题,我推测您达到了一个限制;具体地说,这是一个整数可以具有的最低值。

In Java, that value is -2147483647,而default implementation of Gremlin Server正好是编写default implementation of Gremlin Server的语言。因此,在尝试将该值解释为整数时,反序列化过程很可能会失败。由于该值低于整数的最小值,并且由于错误消息指出它是一个输入字符串,Integer.parseInt("-2555865115")很可能是幕后失败的调用。

如果Gremlin同时序列化和反序列化数据,则可能是该实现中的错误,您可能希望file an issue。同时,考虑实现并注册custom serializer,以便更好地控制IO进程的工作方式。

309