cassandra - JanusGraph 错误 : "Could not find type f

在执行并发批量加载操作时,我收到此错误。随后,我所有的查询都失败了,而且我不断收到同样的错误。

我得到的异常如下:

java.lang.NullPointerException:找不到 id 的类型:52237 在 com.google.common.base.Preconditions.checkNotNull(Preconditions.java:250) 在 org.janusgraph.graphdb.types.vertices.JanusGraphSchemaVertex.name (JanusGraphSchemaVertex.java:57) 在 org.janusgraph.graphdb.vertices.AbstractVertex.label(AbstractVertex.java:121) 在 org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceElement.(ReferenceElement.java:57)在 org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex.(ReferenceVertex.java:46) 在 org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory.detach(ReferenceFactory.java:48) 在org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory.detach(ReferenceFactory.java:69) 在 org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory.detach(ReferenceFactory.java:80) 在org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy.halt(HaltedTraverserStrategy.java:60) 在 org.apache.tinke rpop.gremlin.server.util.TraverserIterator.next(TraverserIterator.java:64) 在 org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor.handleIterator(TraversalOpProcessor.java:529) 在 org.apache.tinkerpop。 gremlin.server.op.traversal.TraversalOpProcessor.lambda$iterateBytecodeTraversal$4(TraversalOpProcessor.java:382) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$ Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)

一些额外的上下文:

  1. storage.batch-loading 未启用
  2. 我正在运行的批量写入操作是高并发和高负载的
  3. 我使用了大约 100 个连接到 Cassandra/ES 后端的 gremlin 服务器实例
  4. 我没有明确定义架构

如果有人能告诉我是什么原因造成的,那就太好了。 谢谢!

最佳答案

如果 gremlin-server 的多个实例正在运行,就会发生这种情况 这是因为 gremlin 服务器未正确关闭或终止。 这可能是因为运行 gremlin-server 的虚拟机可能已经重启。

所以解决方案是登录到 gremlin-console 并根据你的后端运行你的命令。在我的例子中是 cassandra 和 elasticsearch

所以我会跑

方法一

:远程连接tinkerpop.server conf/remote.yaml session

:远程控制台 session

graph=JanusGraphFactory.open('conf/janusgraph-cql-es.properties');

g=graph.traversal()

如果您正在运行容器,那么您的命令必须与此类似

graph=JanusGraphFactory.open('/etc/opt/janusgraph/janusgraph.properties');

g=graph.traversal()

现在运行完那些你就可以运行了

mgmt = graph.openManagement()

mgmt.getOpenInstances()

它将显示所有实例

例如

ac12000231-a9ffbcbb0e921

ac12000230-a9ffbcbb0e921(电流)

除了当前实例关闭其他实例

mgmt.forceCloseInstance('ac12000231-a9ffbcbb0e921')

关闭所有实例后提交更改

管理.commit()

现在重启你的 gremlin 服务器并运行你的查询它应该可以工作了

方法二

如果问题仍然存在,只需关闭您的 gremlin-server 并重新启动它几次...它应该可以工作

加载命令应该可以工作

发生这种情况的另一个原因是如果数据没有正确恢复.. 如果您正在使用集群,请在所有节点上进行备份 然后在您的一个或多个目标节点上恢复

我使用 nodetool 进行备份,使用 sstableloader 进行数据恢复

关于cassandra - JanusGraph 错误 : "Could not find type for id" during a concurrent load operation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60432624/

相关文章:

python - pandas 将嵌套字典转换为 mutiIndex 行和列

c# - 在 Visual Studio 2019 中添加带有 css 类的 div 的键盘快捷方式

git - 撤消 Git 中已推送到远程仓库的特定提交

python - "Chrome not reachable"在非 headless 模式下使用 X

reactjs - Auth0 并使用react,将用户重定向到注册页面

ios - GeometryReader 在 SwiftUI 中占用额外空间

swift - 使用 Storyboard将 Collection View 布局设置为组合布局

google-cloud-platform - 使用 GCP AutoML 进行自定义实体提取的预测

mysql - 无法在 AWS-mysql 中创建表并抛出错误代码 1044。拒绝用户 'user1

javascript - 禁用移动浏览器滑动返回行为?