【问题标题】:TITAN : Gremlin query returns inconsistent results on repeated executionTITAN:Gremlin 查询在重复执行时返回不一致的结果
【发布时间】:2015-07-30 21:18:19
【问题描述】:

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

【问题讨论】:

  • 这里有同样的问题,我已经用 django/mogwai 删除了每个顶点并得到了同样的情况。我该如何解决这个问题?
  • @DmitryYudin 升级到最新版本,这似乎是一个错误

标签: graph graph-databases titan gremlin rexster


【解决方案1】:

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

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

因此,请务必在绘制突变图后致电 g.commit()。然后,当您进行查询时(在 Rexster 控制台、Dog House 等不同的上下文中),请务必在查询之前g.rollback(),以确保您没有阅读过时的内容。

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

如果这两者都不是,而且可能是一个错误,我只能建议您更新到 Titan 0.5.4。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2015-12-07
    相关资源
    最近更新 更多