3

我在 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]
4

1 回答 1

3

你没有说你的删除是如何发生的,但这个问题几乎总是归结为一个未提交或陈旧的事务。换句话说,它是:

  1. 删除事务未提交
  2. 事务已提交,但查询方未启动新事务,因此正在获取缓存数据。

所以,一定要g.commit()在你做图突变后打电话。然后,当您进行查询时(在 Rexster Console、Dog House 等不同的上下文中),请务必g.rollback()在查询之前确保您没有阅读过时的内容。

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

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

于 2015-05-19T14:19:07.677 回答