LWT и Консистенция в Кассандре
Кажется, это ошибка для меня,
1) Я создал пространство ключей с коэффициентом репликации "3"
CREATE KEYSPACE IF NOT EXISTS replicationtest WITH replication = {'class':'SimpleStrategy','replication_factor' : 3};
ПРИМЕЧАНИЕ. Это кластер с одним узлом, но коэффициент репликации я сохранил равным 3, поэтому позже я добавлю новые узлы в кластер.
2) Я установил уровень согласованности как ОДИН
cqlsh:replicationtest> CONSISTENCY ONE
3) Я создал "тестовый стол"
CREATE TABLE IF NOT EXISTS testtable("partitionId" text, "name" text, "value" text, primary key ("partitionId","name"));
4) Теперь я попробовал простой запрос INSERT
INSERT INTO testtable("partitionId", "name", "value") VALUES ('testtable','testname', 'testvalue');
ЭТО РАБОТАЕТ, КАК ОЖИДАЕТСЯ, ТАК КАК УРОВЕНЬ согласованности
5) Теперь я попытался вставить запрос с LWT (ЕСЛИ НЕ СУЩЕСТВУЕТ)
INSERT INTO testtable("partitionId", "name", "value") VALUES ('testtable','testnameanew', 'testvaluenew') IF NOT EXISTS;
ТЕПЕРЬ ОШИБКА С NoHostAvailable: ОШИБКА
Может кто-нибудь объяснить, как это исправить? Как выполнить этот LWT с последовательностью как 1?
1 ответ
Lwt использует последовательный уровень последовательно под капотом, и поскольку RF равен 3, он ожидает, что s 2 узла будет работать. Следовательно, операция не выполняется, как ожидалось. Прочитайте это для получения дополнительной информации.