我也提出了一个github问题。粘贴以下内容。
janusgraph版本-janusgraph-0.3.1
Cassandra-cassandra:3.11.4
当我们使用cassandra后端运行janusgraph时,一段时间后,janusgraph开始抛出以下错误并进入不可用状态。
janusgraph日志:
466489[gremlin-server-exec-6]info 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.getorelsetrow(try。java:671)在org.janusgraph.diskstorage.cql.cqlkeycolumnvaluestore.getkeys(cqlkeycolumnvaluestore。java:405)
原因:com.datastax.driver.core.exceptions.readfailureexception:在一致性仲裁的读取查询期间发生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:02980读取命令。java:569 - 从janusgraph.edgestore读取74个活动行和100001个逻辑删除单元格,其中column1>=02和column1<=03 limit 100(请参阅逻辑删除警告阈值)
错误[readstage-2]2019-07-19 11:40:02980 storageproxy。java:1896 - 在查询'select*from janusgraph.edgestore where column1>=02 and column1<=03 limit 100'(上次扫描的行分区键是((00000000002b9d88),02))期间扫描了100001个逻辑删除;查询已中止
相关问题:cassandra在一致性本地\u one的读取查询期间失败(需要1个响应,但只有0个副本响应,1个失败)
问题:
1) 边缘更新是否存储为新项导致墓碑(因为杰那斯是泰坦之叉)。如何在titan graph数据库边缘标签中增加访问次数?https://github.com/janusgraph/janusgraph/issues/934
2) 正确的方法是什么?
任何解决方案/适应症都会非常有用。
[更新]
1) 对边缘的更新不会导致janusgraph中出现墓碑。
2) 解决方案:-根据答案,根据删除的边/顶点,将gc\u grace\u秒减少到一个较低的值。-还可以考虑根据需要调整cassandra.yaml中的“tombstone\u failure\u threshold”。
1条答案
按热度按时间carvr3hs1#
对于cassandra,tombstone是一个标志,指示应该删除记录,这可能发生在明确请求删除操作之后,或者在生存时间(ttl)过期之后。带有墓碑的记录将在
gc_grace_seconds
执行删除操作后,默认为10天。经常跑步
nodetool repair janusgraph edgestore
(基于提供的错误日志)应该能够修复问题。如果仍然出现错误,则可能需要减小gc_grace_seconds
表的值,如下所述。有关墓碑的更多信息:
https://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html
墓碑vs节点工具与修复