cassandra 2.1.2版本的一个bug

最近从cassandra 2.0.8升级到2.1.2,在考察2.1.2的时候,发现了一个2.1.2版的一个bug,一直怀疑是java驱动的原因,后来发现只要满足特定条件,就可以重现,用cqlsh客户端也可以。
bug重现步骤:
首先创建keyspace space1和space2.
在space1里创建一个表table3
在space2里创建两个表table1,table2
在table3里插入一条记录
删除表table1
删除table3插入的那条记录
删除表table2
再根据主键,在tbale3里查询,会发现之前那条记录并未删除。

1
2
3
4
5
6
7
8
9
10
11
12
CREATE KEYSPACE space1 WITH replication =
{'class': 'SimpleStrategy', 'replication_factor': 3};
CREATE TABLE space1.table3(a INT, b INT, c text,PRIMARY KEY(a,b));
CREATE KEYSPACE space2 WITH replication =
{'class': 'SimpleStrategy', 'replication_factor': 3};
CREATE TABLE space2.table1(a INT, b INT, c INT, PRIMARY KEY(a,b));
CREATE TABLE space2.table2(a INT, b INT, c INT, PRIMARY KEY(a,b));
INSERT INTO space1.table3(a,b,c) VALUES(1,1,'1');
DROP TABLE space2.table1;
DELETE FROM space1.table3 WHERE a=1 AND b=1;
DROP TABLE space2.table2;
SELECT * FROM space1.table3 WHERE a=1 AND b=1;

you will find that the row (a=1 and b=1) in space1.table3 is not deleted

虽然,这个问题不影响一个表结构确定稳定运行的业务,但是也是让人不爽的一件事情。
我已经通过我蹩脚的英文,把这个bug提交到cassandra的jira上了:
https://issues.apache.org/jira/browse/CASSANDRA-8558

留言

提示:你的email不会被公布,欢迎留言^_^

*

验证码 *