最近从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
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/616.html