我有一个数据中心us-east-2,上面运行着三个节点:
Datacenter: us-east-2
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
Address Load Tokens Owns (effective) Host ID Rack
UN 18.224.15.224 246.3 KiB 256 0.0% d17905d7-cf83-4eda-821c-74ccfe921291 2b
UN 3.133.147.118 265.74 KiB 256 0.0% 5429f522-1da1-4239-8359-1a6c528ce5dd 2a
UN 3.132.214.35 269.74 KiB 256 0.0% 76538ea7-a4f7-4370-bab8-03de2e70c5c6 2b
我创建了一个键空间测试:
CREATE KEYSPACE test WITH REPLICATION = {‘class’:’NetworkTopologyStrategy’, ‘us-east-2’:3};
我有两个表samplestack和顶表内测试。
我的工作必须使用cas操作,因此有几个updateif查询(示例):
"UPDATE top_table SET top = "+ nextTop +" WHERE id = 0 IF top = "+ currTop;
每次我的两个复制副本退出时都会声明错误: Exception in thread "LockFreeStack3" com.datastax.oss.driver.api.core.servererrors.WriteTimeoutException: Cassandra timeout during CAS write query at consistency SERIAL (2 replica were required but only 1 acknowledged the write)
有什么办法解决这个问题吗?我读过多个解决方案,但增加超时并不能解决问题。而且,我不能减少并行性,必须为我手头的问题合并cas操作。
在java代码中,每个副本有一个线程。将一致性显式设置为serial也不起作用。
暂无答案!
目前还没有任何答案,快来回答吧!