Кассандра LWT ReadTimeoutException или WriteTimeoutException
Я пытаюсь сделать две вставки процесса в одной таблице. Поэтому сначала я пытаюсь ввести значения ключа разделения и кластеризации с помощью LWT, если это успешно, это означает, что процесс может продолжить эту работу для этого временного сегмента, в противном случае другой процесс уже завершил этот сегмент. LWT устанавливается с уровнем согласованности One и последовательным уровнем согласованности LOCAL_SERIAL.
Если первая вставка прошла успешно, работа выполнена, а другая вставка выполнена также с уровнем согласованности, равным единице. Первый оператор имеет оператор 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 ответ
Похоже, у вашего кластера какая-то проблема с ответами. Таймауты на узлах (из-за перегрузки или других проблем) или некоторые узлы фактически не работают. Другой причиной может быть ваш фактор репликации, поэтому убедитесь, что у вас есть как минимум много узлов, как ваш RF.
Сделать nodetool status
проверить состояние ваших узлов. Также используйте nodetool info
чтобы проверить, есть ли у них исключения (если так, проверьте журналы после, вы можете grep для exception
чтобы помочь сузить).
В случае перегрузки это должно быть видно с nodetool tpstats
Ищите много в ожидании или заблокирован / все время заблокирован.