Cassandra LWT ReadTimeoutException或WriteTimeoutException

时间:2018-06-08 19:35:34

标签: cassandra lwt

我正在尝试在同一个表中插入两个进程。因此,首先我尝试使用LWT输入分区和群集密钥值,如果这成功,则意味着该流程可以继续该时间段的工作,否则另一个流程已经完成该桶。 LWT的一致性级别为One,序列一致性级别为LOCAL_SERIAL。

如果第一次插入成功,则完成工作并完成另一次插入,同时一致性级别为1。对于这样一种情况,第一个语句有一个TTL语句,在这个情况下,执行该工作的进程终止于TTL为90之后该行将为空。

即使我运行单个进程,LWT也会因读取或写入超时异常而失败。

这是准备好的陈述和我得到的例外。任何帮助表示赞赏。

com.datastax.driver.core.exceptions.ReadTimeoutException: 
Cassandra timeout during read query at consistency LOCAL_QUORUM 
(2 responses were required but only 1 replica responded)

com.datastax.driver.core.exceptions.WriteTimeoutException: 
Cassandra timeout during write query at consistency LOCAL_SERIAL 
(2 replica were required but only 1 acknowledged the write)

statement = {DefaultPreparedStatement@10844} 
 preparedId = {PreparedId@10886} 
 query = "INSERT INTO event_store(evt_type, rcncl_date, rcncl_ts) values( ?, ?, ?) IF NOT EXISTS USING TTL 90;"
 queryKeyspace = "test"
 routingKey = null
 consistency = {ConsistencyLevel@10882} "ONE"
 serialConsistency = {ConsistencyLevel@10883} "LOCAL_SERIAL"
 traceQuery = false
 retryPolicy = null

1 个答案:

答案 0 :(得分:0)

您的群集似乎遇到了某些问题。节点上的超时(由于过载或其他类型的问题)或某些节点实际上已关闭。另一个原因可能是您的复制因素,因此请确认您至少有许多节点,作为您的RF。

执行nodetool status检查节点的状态。还可以使用nodetool info检查它们是否有异常(如果是,请检查日志之后,您可以查看exception以帮助缩小范围)。

如果超载,它应该可以nodetool tpstats显示,查找大量待处理或阻塞/所有时间阻塞。