TITAN:Gremlin查询在重复执行时返回不一致的结果

时间:2015-05-19 07:11:39

标签: graph graph-databases titan gremlin rexster

我在cassandra上运行REXSTER / TITAN 0.4并使用gremlin进行遍历。 我在Rexster Doghouse Gremlin控制台中运行了gremlin查询。

之前删除了顶点92,因为它是一个具有相同键的重复顶点(" eddy.com")

但是当我查询时,我有时会得到那个顶点,有时候不会。 这是在本地开发机器上运行,意味着没有其他线程或并行任务正在运行/更新它们之间的这个顶点。 我在这里缺少任何配置/设置吗?这是一个错误吗?请帮忙!

gremlin> g.V('domain','eddy.com')

==>v[88]
gremlin> g.V('domain','eddy.com')

==>v[88]
==>v[92]
gremlin> g.V('domain','eddy.com')

==>v[88]
gremlin> g.V('domain','eddy.com')

==>v[88]
gremlin> g.V('domain','eddy.com')

==>v[88]
==>v[92]

1 个答案:

答案 0 :(得分:3)

您没有说明删除是如何发生的,但此问题几乎总是归结为未提交或过时的事务。换句话说,它是:

  1. 未提交删除交易
  2. 事务已提交,但查询方未启动新事务,因此获取缓存数据。
  3. 因此,请确保在进行图形突变后调用g.commit()。然后,当你去查询(在Rexster Console,Dog House等不同的上下文中)时,在查询之前一定要g.rollback()以确保你没有阅读过时的东西。

    如果您想知道为什么在某些情况下您会看到删除的数据而不是其他情况,那是因为向Rexster发出请求可能会在具有新事务状态(或不是)的线程中处理,从而为您提供不同的结果。

    如果它既不是这些东西也不是错误,我只能建议你更新到Titan 0.5.4。