最近从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里查询,会发现之前那条记录并未删除。
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
...