我正在尝试在同一个表中插入两个进程。因此,首先我尝试使用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
答案 0 :(得分:0)
您的群集似乎遇到了某些问题。节点上的超时(由于过载或其他类型的问题)或某些节点实际上已关闭。另一个原因可能是您的复制因素,因此请确认您至少有许多节点,作为您的RF。
执行nodetool status
检查节点的状态。还可以使用nodetool info
检查它们是否有异常(如果是,请检查日志之后,您可以查看exception
以帮助缩小范围)。
如果超载,它应该可以nodetool tpstats
显示,查找大量待处理或阻塞/所有时间阻塞。