【问题标题】:JanusGraph query failure due to Cassandra backend tombstone exception由于 Cassandra 后端墓碑异常导致 JanusGraph 查询失败
【发布时间】:2019-11-30 09:51:13
【问题描述】:

我也为此提出了GitHub issue。在下面粘贴相同的内容。

  • JanusGraph 版本 - janusgraph-0.3.1
  • Cassandra - cassandra:3.11.4

当我们使用 Cassandra 后端运行 JanusGraph 时,一段时间后,JanusGraph 开始抛出以下错误并进入不可用状态。

JanusGraph 日志:

466489 [gremlin-server-exec-6] 信息 org.janusgraph.diskstorage.util.BackendOperation - 临时异常 在后端操作 [EdgeStoreKeys] 期间。 正在尝试退避重试。 org.janusgraph.diskstorage.TemporaryBackendException: 存储后端临时故障在 io.vavr.API$Match$Case0.apply(API.java:3174) 在 io.vavr.API$Match.of(API.java:3137) 在 org.janusgraph.diskstorage.cql.CQLKeyColumnValueStore.lambda$static$0 (CQLKeyColumnValueStore.java:123) 在 io.vavr.control.Try.getOrElseThrow(Try.java:671) 在 org.janusgraph.diskstorage.cql.CQLKeyColumnValueStore.getKeys (CQLKeyColumnValueStore.java:405)

原因:com.datastax.driver.core.exceptions.ReadFailureException: 一致性 QUORUM 读取查询期间 Cassandra 失败(1 个响应 是必需的,但只有 0 个副本响应,1 个失败) 在 com.datastax.driver.core.exceptions.ReadFailureException.copy(ReadFailureException.java:130) 在 com.datastax.driver.core.exceptions.ReadFailureException.copy(ReadFailureException.java:30)

Cassandra 日志:

警告 [ReadStage-2] 2019-07-19 11:40:02,980 ReadCommand.java:569 - 读取 用于查询 SELECT * FROM 的 74 个活动行和 100001 个墓碑单元 janusgraph.edgestore WHERE column1 >= 02 AND column1

错误 [ReadStage-2] 2019-07-19 11:40:02,980 StorageProxy.java:1896 - 扫描超过 100001 个墓碑 在查询期间 'SELECT * FROM janusgraph.edgestore WHERE column1 >= 02 AND column1

相关问题: Cassandra failure during read query at consistency LOCAL_ONE (1 responses were required but only 0 replica responded, 1 failed)

问题:

1) Edge 更新是否存储为导致墓碑的新项目? (因为 janus 是 Titan 的一个分支)。 How to increment Number of Visit count in Titan graph database Edge Label? https://github.com/JanusGraph/janusgraph/issues/934

2) 正确的方法是什么。 ?

任何解决方案/适应症都会非常有帮助。

[更新]

1) 更新边缘不会导致 JanusGraph 中的墓碑。

2) 解决方案: - 根据答案,根据边/顶点的删除将 gc_grace_seconds 降低到较低的值。 - 也可以根据需要考虑调整cassandra.yaml中的“tombstone_failure_threshold”。

【问题讨论】:

    标签: cassandra graph-databases titan janusgraph


    【解决方案1】:

    对于 Cassandra,墓碑是指示应删除记录的标志,这可能发生在明确请求删除操作之后,或者一旦生存时间 (TTL) 期限到期。删除操作执行后,带有 tombstone 的记录将保留gc_grace_seconds 中定义的时间,默认为 10 天。

    通常运行nodetool repair janusgraph edgestore(根据提供的错误日志)应该能够解决问题。如果您仍然收到错误,您可能需要减少表的gc_grace_seconds 值,如here 所述。

    有关墓碑的更多信息:

    【讨论】:

    • 感谢您的回答,它有助于理解 gc 部分。在这种情况下,我们没有做很多边缘删除。您对边缘更新导致删除/重新创建边缘导致墓碑浮出水面有任何想法吗?
    猜你喜欢
    • 2017-08-22
    • 2020-08-29
    • 2023-03-08
    • 2015-05-31
    • 2015-09-12
    • 2019-07-09
    • 2018-11-20
    • 2017-02-09
    • 1970-01-01
    相关资源
    最近更新 更多