首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取CAS操作的WriteTimoutException

获取CAS操作的WriteTimoutException
EN

Stack Overflow用户
提问于 2017-08-07 13:27:53
回答 2查看 3.6K关注 0票数 3

我试图使用幻影cassandra 3:9插入相当少量的数据异步,但是这个查询始终失败:INSERT INTO test_db.test_tbl(name, last, ts) VALUES('aaa', 'bbb', 1502109409) IF NOT EXISTS USING TTL 0;,我得到了以下异常:

在一致性串行的写查询过程中,com.datastax.driver.core.exceptions.WriteTimeoutException:卡桑德拉超时(需要一个副本,但只有0确认写入) 在com.datastax.driver.core.exceptions.WriteTimeoutException.copy(WriteTimeoutException.java:100) 在com.datastax.driver.core.Responses$Error.asException(Responses.java:134) 在com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:507) 在com ..。

我和码头一起管理卡桑德拉。我试图改变cassandra.yaml write_request_timeout_in_ms: 20000,但这并没有多大影响。

更新:我尝试将一致性级别设置为一个(也尝试了另一个):

代码语言:javascript
复制
insert
      .value(_.name, "aaa")
      .value(_.last, uuid)
      .value(_.ts, Random.long)
      .ifNotExists()
      .consistencyLevel_=(ConsistencyLevel.ONE)

但是异常仍然显示“在一致性串行的写查询期间Cassandra超时”。

EN

回答 2

Stack Overflow用户

发布于 2017-08-07 13:38:06

您使用的是IF NOT EXISTS关键字,它是一个轻量级事务

Cassandra通过扩展基于仲裁算法的Paxos协商一致协议来实现轻量级事务。Paxos确保以四次往返为代价的线性一致性。

的成本听起来很高--也许太高了,如果您的应用程序很少要求每个操作都可以线性化的话。因此,将轻量级事务保留在绝对必要的的情况下。

来源:https://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0

票数 1
EN

Stack Overflow用户

发布于 2020-05-21 12:18:27

同样的问题,这是我的解决方案:

它只适合一个节点。

  1. 执行LWT一次,关闭和init会话一次。使用com.datastax.driver.core.Session.init()。
  2. Cluster.Builder.setConsistencyLevel(ConsistencyLevel.QUORUM)
  3. Cluster.Builder.withSocketOptions(newSocketOptions().setConnectTimeoutMillis(300000) .setReadTimeoutMillis(300000);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45548103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档