【发布时间】:2021-11-08 20:32:09
【问题描述】:
我正在编写单元测试并验证应该在我的 JanusGraph 后端中返回/创建/更新等的数据。
我也在使用 Gremlin 终端验证结果,但注意到已更新的实体并未反映我终端中的更改。删除顶点时也会发生同样的事情。它不再在图表中,但我的 gremlin 控制台返回结果。
我让同事运行与我相同的查询来证明值不一致。有没有办法将 Gremlin 与 Graph 中的实际值同步?
编辑。我的代码正在提交。我只是使用 tinkerpop 来验证数据。
【问题讨论】:
-
您是否确保在进行更改后提交事务?在您提交 Tx 之前,您看到的内容以及查看图表的其他人看到的内容将不同步。
-
提交在我的 Java 代码中,我只是在用 gremlin 进行检查。我发出了
g.tx().commit(),它现在返回了预期值。当我没有从 tinkerpop 中执行任何操作时,为什么我必须在其中发出提交? -
这可能只是时间问题,但在不了解后端存储、索引、连接方式和其他变量的情况下很难知道。请记住,在 Gremlin 控制台中,您发出的查询会启动一个新事务,该事务将具有图形视图。该 Tx 保持打开状态,直到您明确关闭它。如果新项目是在您开始使用控制台后添加的 - 或非常接近同时,通过发出
commit或很可能rollback也有效,您正在让事情有机会从Tx 的观点。正如我所说,它也可能是别的东西。 -
HBase 是我正在使用的存储引擎。我只是想知道为什么搜索会运行需要提交或回滚的可写事务。我想我会在每次搜索验证后发出回滚...
标签: java gremlin janusgraph