we have a
- 4 nodes (single DC) C* cluster
- a keyspace with replication factor 3
- a table in the keyspace (size of the datadir of the table on a single node is about 110G)
- the table is created with the following settings:
CREATE TABLE changes ( id uuid, "order" int, data_int frozen <map<text,int>>, data_list frozen <map<text,frozen <list<text>>>>, data_long frozen <map<text,bigint>>, data_maps frozen <map<text,frozen <list<frozen <map<text,text>>>>>>, data_text frozen <map<text,text>>, data_uuid frozen <map<text,uuid>>, guid uuid, "type" int, PRIMARY KEY (id, "order") ) CREATE INDEX command_guid_index ON changes (guid CREATE INDEX command_type_index ON changes ("type");
Consistency level both Read and Write is set to 2
Cluster.Builder builder = Cluster.builder(). withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.TWO)). withCredentials(usernameCassandra, passwordCassandra). withSocketOptions(socketOptions);
We delete values from the above table with a LOGGED Batch (code not included).
Under heavy load, if we execute a DELETE operation from the above described table (changes) with an LOGGED BATCH and Consistency Level = 2
And immediately after we execute a SELECT (with Consistency Level = 2) sometimes deleted rows (which were deleted previously in the batch) are returned by the SELECT.
Any ideas how this might happen?