Hi all,

The cluster has 5 nodes, one keyspace(RF=3), a table(named t1) and a column family(named cf1,and has two fixed columns each row). Single thread, two test programs to insert data using lightweight transaction.

the pseudocode is as follows:
program 1:
...
for (int i=1;i<10000;i++){
...
client.execute_sql3_query("insert into t1(id,name) values("+i+",'jane') if not exists");
}

program 2:
...
List<Column> expected=new ArrayList<Column>();
for (int i=1;i<10000;i++){
List<Column> updates=new ArrayList<Column>();
updates.add(...);
...
client.cas(ByteBufferUtil.byte(i),"cf1",expected,updates,ConsistencyLevel.SERIAL, ConsistencyLevel.QUORUM);
}

Program 1 and 2 are executed synchrously,if there is no exception, data got from cqlsh using the following cqls:
cqlsh> select count(*) from t1 limit 10000;
cqlsh> select count(*) from cf1 limit 10000;

However,the results of the two cqls are different each time I execute,and I find every node is UP, using nodetool status.

In the beginning of a suite of tests, we didn't find any problem. The case should we notice is that, a test when the former table and column family were dropped and then the newly created table and column family would lead the scenario descripted above.


I¹m using Cassandra 2.0.3.

Any insights would be greatly appreciated.

Thanks.

Reply via email to