大家好,
我们在Cassandra日志中看到一些错误,如:
ERROR [ReadRepairStage:24984] 2022-10-18 10:05:32,622 CassandraDaemon.java:228 - Exception in thread Thread[ReadRepairStage:24984,5,main]
但是,我们已停用读取修复
我们的环境:
- cassandra :3.11.5
- 群集复制:带DC1的射频3:1、DC2:1、DC3:1
- 读取所有表的修复设置:dclocal读取修复机会= 0.0且读取修复机会= 0.0
有人能解释一下吗?谢谢你,弗洛
1条答案
按热度按时间kb5ga3dv1#
X1 E0 F1 X不仅仅由表的读取修复机会属性触发。
当以下条件为真时,协调器将触发读取修复:
1.读取中涉及多个复制副本(请求一致性高于
ONE
或LOCAL_ONE
),并且1.返回的结果摘要不匹配(一个或多个副本已过期)。
例如,对于一致性为
LOCAL_QUORUM
且复制因子为3的读请求,协调器将:然后,协调器将对直接读取请求的数据进行散列,并将其与来自其他副本的摘要进行比较。如果它们匹配,则将数据返回到客户端/驱动程序。如果存在摘要不匹配,则协调器触发读取修复以修复不一致的副本,然后将数据返回到客户端/驱动程序。
这种类型的读取修复称为“阻塞”,因为在修复故障副本之前,结果不会返回到客户端。如果存在摘要不匹配,协调器将始终触发这种类型的读取修复。它不依赖于读取修复机会。
有关更多信息,请参阅Read repair in Cassandra。干杯!