Кассандра 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Ищите много в ожидании или заблокирован / все время заблокирован.

Другие вопросы по тегам