Cassandra轻量级事务的问题

时间:2016-10-20 12:19:14

标签: cassandra datastax-enterprise

我在独立的Cassandra实例中看到Cassandra轻量级事务的一些有趣行为。我正在使用DataStax Enterprize 5.0.2进行测试。问题是,使用轻量级事务更新的表返回true,这意味着它已更新。但是对同一个表的后续查询显示该行未更新。请注意,我在集群环境中尝试了相同的操作,它工作得非常好!所以我只是想了解我的环境中出了什么问题。

以下是我正在做的一个简单示例。

我创建了一个简单的表格,如下所示:

CREATE TABLE smart.TOPICSCONSUMERASSNSTATUS (
    TOPNM text,
    PARTID int,
    STATUS text,
    PRIMARY KEY (TOPNM,PARTID)
);

我将以下一组预加载数据用于测试目的:

insert into smart.topicsconsumerassnstatus (topnm, partid, status) values ('ESP', 0, 'UNASSIGNED');
insert into smart.topicsconsumerassnstatus (topnm, partid, status) values ('ESP', 1, 'UNASSIGNED');
insert into smart.topicsconsumerassnstatus (topnm, partid, status) values  ('ESP', 2, 'UNASSIGNED');
insert into smart.topicsconsumerassnstatus (topnm, partid, status) values ('ESP', 3, 'UNASSIGNED');
insert into smart.topicsconsumerassnstatus (topnm, partid, status) values ('ESP', 4, 'UNASSIGNED');

现在,我把第一个select语句从表中获取详细信息:

select * from smart.topicsconsumerassnstatus where topnm='ESP';

列出状态为UNASSIGNED的所有partid。为了分配partid 0,我然后触发以下更新语句:

update smart.topicsconsumerassnstatus set status='ASSIGNED' where topnm='ESP' and partid=0 if status='UNASSIGNED';

它返回true。现在,当我再次触发上面的选择查询时,它会列出状态为UNASSIGNED的所有5行。有趣的是,重复执行update语句始终保持返回true - 这显然意味着实际数据未在表中更新。

我也看到了查询跟踪,并且当CAS成功返回时,更新似乎正常工作。

另请注意,当查询与"允许过滤"一起使用时,会明确看到此行为。至少一次,从那时起...

任何人都可以对可能出现的问题进行一些说明吗?是否与"允许过滤"条款?

0 个答案:

没有答案
相关问题