当前位置: 首页 > 知识库问答 >
问题:

在CAS操作上获取WriteTimoutException

连正信
2023-03-14

我试图使用phantom到Cassandra 3:9异步插入相当少量的数据,但是这个查询总是失败:插入到test_db.test_tbl(name,last,ts)值('AAA','BBB',1502109409)如果不存在,则使用TTL 0;我得到以下异常

WriteTimeOutException:在一致性串行写入查询期间Cassandra超时(需要1个副本,但只有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$miscreativeexecution.onset(requestHandler.java:507)

在com....

insert
      .value(_.name, "aaa")
      .value(_.last, uuid)
      .value(_.ts, Random.long)
      .ifNotExists()
      .consistencyLevel_=(ConsistencyLevel.ONE)

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

共有1个答案

柯子琪
2023-03-14

您正在使用If NOT exists关键字,这是一个轻量级事务

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

这听起来是一个很高的成本--也许太高了,如果您有一个应用程序的罕见情况,要求每个操作都是线性的。因此,为那些绝对必要的情况保留轻量级事务

 类似资料:
  • 乐观锁与悲观锁 我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时间片之间,需要进行cpu切换,也就是会发生进程的切换。切换涉及到清空寄存器,缓存数据。然后重新加载新的thread所需数据。当一个线程被挂起时,加入到阻塞队列,在一定的时间或条件下,在通过notify(),notifyAll()唤醒回来。 在某个资源不可用的时候,就将

  • 当我从DeployerConfigContext.xml中删除attributeRepository时,它的抛出异常。 根据本文档https://apereo.github.io/cas/4.2.x/installation/ldap-authentication.html,LdapAuthenticationHandler能够独立地解析和检索主体属性,而不需要额外的主体解析器机器。如果是,我们如

  • 问题内容: 我正在redis中进行setbit操作,以标记特定日期哪些用户在线。 我正在做一个redis get操作来获取密钥的值。 输出是 我的问题是在“ h”键处设置了第0位1。它应该返回128但返回65533。为什么这样? 我的最终目标是从redis中以二进制形式获取位图,以便我可以确定在特定日期哪些用户处于活动状态。 问题答案: 发生此错误是由于utf-8编码。当我们将第0位设置为1时,它

  • 本文向大家介绍python实现redis三种cas事务操作,包括了python实现redis三种cas事务操作的使用技巧和注意事项,需要的朋友参考一下 cas全称是compare and set,是一种典型的事务操作。 简单的说,事务就是为了存取数据库中同一数据时不破坏操作的隔离性和原子性,从而保证数据的一致性。 一般数据库,比如MySql是如何保证数据一致性的呢,主要是加锁,悲观锁。比如在访问数

  • 问题内容: 我还无法找出如何使用PHP进行操作,并想尝试找出答案。 我注意到他们列出了,其中提供了有关浏览器的大量信息。他们是从中获取操作系统信息还是从别的东西获取操作系统信息?有没有我可以用来获取用户操作系统的API? 我知道他们是如何获得浏览器和IP的,但无法弄清操作系统部分! 问题答案: 下面的代码可以单独说明如何显示某人正在使用哪个操作系统。 它的作用是嗅探您的核心操作系统模型,例如作为我

  • hget key field 获取指定的hash field hmget key filed1....fieldN 获取全部指定的hash filed hmset key filed1 value1 ... filedN valueN 同时设置hash的多个field