Cassandra не может обновить строку, когда один узел не работает

Первый пользователь Cassandra и обязательная проблема. Cassandra работает в кластере из 2 узлов с коэффициентом репликации = 2, и обновление строки завершается сбоем, когда 1 узел не работает.

Ключевое пространство определяется, как показано ниже.

CREATE KEYSPACE call_completion_dataspace WITH replication = {'class':'NetworkTopologyStrategy',  'DC1': '2'};

Когда служба на узле 1 останавливается вручную. Обновления строк перестают работать. Смотри ниже

cqlsh>select * from requests where b_msisdn=1;
b_msisdn | request
       1 | {"321":{"a_party":"321","b_party":"1234","request_timestamp":"Aug 12, 2015 4:25:30 PM","request_type":"autocall","call_failed_scenario":"noasnswer","refId":"113365567757_68961c4"}}

Обновление строки, когда узел 1 не работает

cqlsh>UPDATE call_completion_dataspace.callcompletionrequests SET request='"111"' WHERE b_msisdn=1; 
cqlsh>select * from call_completion_dataspace.callcompletionrequests where b_msisdn=1;             

Колонка должна быть обновлена, но вот

b_msisdn | request
       1 | {"321":{"a_party":"321","b_party":"1234","request_timestamp":"Aug 12, 2015 4:25:30 PM","request_type":"autocall","call_failed_scenario":"noasnswer","refId":"113365567757_68961c4"}}

Если восстановление nodetool выполняется на «верхнем» узле. Обновления начинают работать как обычно. Похоже, что узел не может зарегистрировать, что другой узел не работает.


person Arslan Mehboob    schedule 17.09.2015    source источник


Ответы (1)


Хорошо, проблема в том, что время сервера не синхронизировано. После сопоставления времени запросы выполняются нормально.

person Arslan Mehboob    schedule 17.09.2015