I did some test on this issue, and it turns out the problem caused by local time stamp. In our traffic, the update and delete happened very fast, within 1 seconds, even within 100ms. And at that time, the ntp service seems not work well, the offset is same times even larger then 1 second.
Then the some delete time stamp is before the create time stamp, so when do mismatch resolve, the result is not correct. 2012/7/4 aaron morton <aa...@thelastpickle.com> > Jason, > Are you able document the steps to reproduce this on a clean install ? > > Is so do you have time to create an issue on > https://issues.apache.org/jira/browse/CASSANDRA > > Thanks > > > ----------------- > Aaron Morton > Freelance Developer > @aaronmorton > http://www.thelastpickle.com > > On 2/07/2012, at 1:49 AM, Jason Tang wrote: > > For the create/update/deleteColumn/deleteRow test case, for Quorum > consistency level, 6 nodes, replicate factor 3, for one thread around 1/100 > round, I can have this reproduced. > > And if I have 20 client threads to run the test client, the ratio is > bigger. > > And the test group will be executed by one thread, and the client time > stamp is unique and sequenced, guaranteed by Hector. > > And client only access the data from local Cassandra. > > And the query only use the row key which is unique. The column name is not > unique, in my case, eg, "status". > > And the row have around 7 columns, which are all not big, eg > "status:true", "userName:Jason" ... > > BRs > //Ares > > 2012/7/1 Jonathan Ellis <jbel...@gmail.com> > >> Is this Cassandra 1.1.1? >> >> How often do you observe this? How many columns are in the row? Can >> you reproduce when querying by column name, or only when "slicing" the >> row? >> >> On Thu, Jun 28, 2012 at 7:24 AM, Jason Tang <ares.t...@gmail.com> wrote: >> > Hi >> > >> > First I delete one column, then I delete one row. Then try to read >> all >> > columns from the same row, all operations from same client app. >> > >> > The consistency level is read/write quorum. >> > >> > Check the Cassandra log, the local node don't perform the delete >> > operation but send the mutation to other nodes (192.168.0.6, >> 192.168.0.1) >> > >> > After delete, I try to read all columns from the row, I found the >> node >> > found "Digest mismatch" due to Quorum consistency configuration, but the >> > result is not correct. >> > >> > From the log, I can see the delete mutation already accepted >> > by 192.168.0.6, 192.168.0.1, but when 192.168.0.5 read response from >> 0.6 >> > and 0.1, and then it merge the data, but finally 0.5 shows the result >> which >> > is the dirty data. >> > >> > Following logs shows the change of column "737461747573" , >> 192.168.0.5 >> > try to read from 0.1 and 0.6, it should be deleted, but finally it >> shows it >> > has the data. >> > >> > log: >> > 192.168.0.5 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,198 StorageProxy.java (line 653) >> > Command/ConsistencyLevel is SliceByNamesReadCommand(table='drc', >> > key=7878323239537570657254616e67307878, >> > columnParent='QueryPath(columnFamilyName='queue', >> superColumnName='null', >> > columnName='null')', >> > >> columns=[6578656375746554696d65,6669726554696d65,67726f75705f6964,696e517565756554696d65,6c6f67526f6f744964,6d6f54797065,706172746974696f6e,7265636569766554696d65,72657175657374,7265747279,7365727669636550726f7669646572,737461747573,757365724e616d65,])/QUORUM >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,198 ReadCallback.java (line 79) >> > Blockfor is 2; setting up requests to /192.168.0.6,/192.168.0.1 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,198 StorageProxy.java (line 674) >> > reading data from /192.168.0.6 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,198 StorageProxy.java (line 694) >> > reading digest from /192.168.0.1 >> > DEBUG [RequestResponseStage:2] 2012-06-28 15:59:42,199 >> > ResponseVerbHandler.java (line 44) Processing response on a callback >> from >> > 6556@/192.168.0.6 >> > DEBUG [RequestResponseStage:2] 2012-06-28 15:59:42,199 >> > AbstractRowResolver.java (line 66) Preprocessed data response >> > DEBUG [RequestResponseStage:6] 2012-06-28 15:59:42,199 >> > ResponseVerbHandler.java (line 44) Processing response on a callback >> from >> > 6557@/192.168.0.1 >> > DEBUG [RequestResponseStage:6] 2012-06-28 15:59:42,199 >> > AbstractRowResolver.java (line 66) Preprocessed digest response >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,199 RowDigestResolver.java (line >> 65) >> > resolving 2 responses >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,200 StorageProxy.java (line 733) >> > Digest mismatch: org.apache.cassandra.service.DigestMismatchException: >> > Mismatch for key DecoratedKey(100572974179274741747356988451225858264, >> > 7878323239537570657254616e67307878) (b725ab25696111be49aaa7c4b7afa52d vs >> > d41d8cd98f00b204e9800998ecf8427e) >> > DEBUG [RequestResponseStage:9] 2012-06-28 15:59:42,201 >> > ResponseVerbHandler.java (line 44) Processing response on a callback >> from >> > 6558@/192.168.0.6 >> > DEBUG [RequestResponseStage:7] 2012-06-28 15:59:42,201 >> > ResponseVerbHandler.java (line 44) Processing response on a callback >> from >> > 6559@/192.168.0.1 >> > DEBUG [RequestResponseStage:9] 2012-06-28 15:59:42,201 >> > AbstractRowResolver.java (line 66) Preprocessed data response >> > DEBUG [RequestResponseStage:7] 2012-06-28 15:59:42,201 >> > AbstractRowResolver.java (line 66) Preprocessed data response >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,201 RowRepairResolver.java (line >> 63) >> > resolving 2 responses >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,201 SliceQueryFilter.java (line >> 123) >> > collecting 0 of 2147483647: 6669726554696d65:false:13@1340870382109004 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,201 SliceQueryFilter.java (line >> 123) >> > collecting 1 of 2147483647: 67726f75705f6964:false:10@1340870382109014 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,201 SliceQueryFilter.java (line >> 123) >> > collecting 2 of 2147483647: >> 696e517565756554696d65:false:13@1340870382109005 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,201 SliceQueryFilter.java (line >> 123) >> > collecting 3 of 2147483647: 6c6f67526f6f744964:false:7@1340870382109015 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,202 SliceQueryFilter.java (line >> 123) >> > collecting 4 of 2147483647: 6d6f54797065:false:6@1340870382109009 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,202 SliceQueryFilter.java (line >> 123) >> > collecting 5 of 2147483647: 706172746974696f6e:false:2@1340870382109001 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,202 SliceQueryFilter.java (line >> 123) >> > collecting 6 of 2147483647: >> 7265636569766554696d65:false:13@1340870382109003 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,202 SliceQueryFilter.java (line >> 123) >> > collecting 7 of 2147483647: 72657175657374:false:300@1340870382109013 >> > DEBUG [RequestResponseStage:5] 2012-06-28 15:59:42,202 >> > ResponseVerbHandler.java (line 44) Processing response on a callback >> from >> > 6552@/192.168.0.1 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,202 SliceQueryFilter.java (line >> 123) >> > collecting 8 of 2147483647: 7265747279:false:1@1340870382109006 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,202 SliceQueryFilter.java (line >> 123) >> > collecting 9 of 2147483647: >> > 7365727669636550726f7669646572:false:4@1340870382109007 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,203 SliceQueryFilter.java (line >> 123) >> > collecting 10 of 2147483647: 737461747573:false:8@1340870382152000 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,203 SliceQueryFilter.java (line >> 123) >> > collecting 11 of 2147483647: 757365724e616d65:false:4@1340870382109000 >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,203 RowRepairResolver.java (line >> 89) >> > versions merged >> > DEBUG [Thrift:17] 2012-06-28 15:59:42,203 RowRepairResolver.java (line >> 102) >> > resolve: 2 ms. >> > DEBUG [Thrift:18] 2012-06-28 15:59:42,204 ClientState.java (line 123) >> logged >> > in: #<User casadm groups=[]> >> > DEBUG [Thrift:18] 2012-06-28 15:59:42,204 CassandraServer.java (line >> 305) >> > get_slice >> > >> > 192.168.0.1: >> > DEBUG [MutationStage:21] 2012-06-28 15:59:42,177 >> RowMutationVerbHandler.java >> > (line 44) Applying RowMutation(keyspace='drc', >> > key='7878323239537570657254616e67307878', >> modifications=[ColumnFamily(queue >> > [737461747573:true:4@1340870382175000,])]) >> > DEBUG [MutationStage:21] 2012-06-28 15:59:42,178 Table.java (line 391) >> > applying mutation of row 7878323239537570657254616e67307878 >> > DEBUG [MutationStage:23] 2012-06-28 15:59:42,187 >> RowMutationVerbHandler.java >> > (line 44) Applying RowMutation(keyspace='drc', >> > key='7878323239537570657254616e67307878', >> modifications=[ColumnFamily(queue >> > -deleted at 1340870382185000- [])]) >> > DEBUG [MutationStage:23] 2012-06-28 15:59:42,187 Table.java (line 391) >> > applying mutation of row 7878323239537570657254616e67307878 >> > DEBUG [MutationStage:20] 2012-06-28 15:59:42,189 Table.java (line 425) >> > mutating indexed column 737461747573 value 4445515545554544 >> > DEBUG [MutationStage:20] 2012-06-28 15:59:42,189 >> CollationController.java >> > (line 77) collectTimeOrderedData >> > DEBUG [MutationStage:20] 2012-06-28 15:59:42,190 Table.java (line 449) >> > Pre-mutation index row is ColumnFamily(queue >> > [737461747573:false:8@1340870382152000,]) >> > DEBUG [MutationStage:20] 2012-06-28 15:59:42,190 Table.java (line 500) >> > skipping index update for obsolete mutation of 737461747573 >> > DEBUG [ReadStage:5] 2012-06-28 15:59:42,199 CollationController.java >> (line >> > 77) collectTimeOrderedData >> > DEBUG [ReadStage:5] 2012-06-28 15:59:42,199 ReadVerbHandler.java (line >> 73) >> > digest is b725ab25696111be49aaa7c4b7afa52d >> > DEBUG [ReadStage:5] 2012-06-28 15:59:42,199 ReadVerbHandler.java (line >> 58) >> > Read key 7878323239537570657254616e67307878; sending response to >> > 6557@/192.168.0.3 >> > DEBUG [ReadStage:6] 2012-06-28 15:59:42,200 CollationController.java >> (line >> > 77) collectTimeOrderedData >> > DEBUG [ReadStage:6] 2012-06-28 15:59:42,201 ReadVerbHandler.java (line >> 58) >> > Read key 7878323239537570657254616e67307878; sending response to >> > 6559@/192.168.0.3 >> > DEBUG [MutationStage:23] 2012-06-28 15:59:42,201 Table.java (line 425) >> > mutating indexed column 6669726554696d65 value null >> > DEBUG [MutationStage:21] 2012-06-28 15:59:42,201 Table.java (line 425) >> > mutating indexed column 737461747573 value 4fec0eee >> > DEBUG [MutationStage:23] 2012-06-28 15:59:42,201 Table.java (line 425) >> > mutating indexed column 6669726554696d65536c696365 value null >> > DEBUG [MutationStage:21] 2012-06-28 15:59:42,201 >> CollationController.java >> > (line 77) collectTimeOrderedData >> > DEBUG [MutationStage:23] 2012-06-28 15:59:42,202 Table.java (line 425) >> > mutating indexed column 696e517565756554696d65 value null >> > DEBUG [MutationStage:21] 2012-06-28 15:59:42,202 Table.java (line 449) >> > Pre-mutation index row is ColumnFamily(queue >> > [737461747573:false:8@1340870382152000,]) >> > DEBUG [MutationStage:23] 2012-06-28 15:59:42,202 Table.java (line 425) >> > mutating indexed column 696e517565756554696d65536c696365 value null >> > DEBUG [MutationStage:23] 2012-06-28 15:59:42,202 Table.java (line 425) >> > mutating indexed column 6d6f54797065 value null >> > DEBUG [MutationStage:21] 2012-06-28 15:59:42,202 KeysIndex.java (line >> 103) >> > removed index entry for cleaned-up value DecoratedKey(DEQUEUED, >> > 4445515545554544):ColumnFamily(queue.idxStatus >> > [7878323239537570657254616e67307878:true:4@1340870382152000,]) >> > DEBUG [MutationStage:23] 2012-06-28 15:59:42,202 Table.java (line 425) >> > mutating indexed column 706172746974696f6e value null >> > DEBUG [MutationStage:21] 2012-06-28 15:59:42,202 >> RowMutationVerbHandler.java >> > (line 56) RowMutation(keyspace='drc', >> > key='7878323239537570657254616e67307878', >> modifications=[ColumnFamily(queue >> > [737461747573:true:4@1340870382175000,])]) applied. Sending response >> to >> > 6552@/192.168.0.3 >> > >> > 192.168.0.6: >> > DEBUG [MutationStage:6] 2012-06-28 15:59:42,177 >> RowMutationVerbHandler.java >> > (line 44) Applying RowMutation(keyspace='drc', >> > key='7878323239537570657254616e67307878', >> modifications=[ColumnFamily(queue >> > [737461747573:true:4@1340870382175000,])]) >> > DEBUG [MutationStage:6] 2012-06-28 15:59:42,177 Table.java (line 391) >> > applying mutation of row 7878323239537570657254616e67307878 >> > DEBUG [MutationStage:6] 2012-06-28 15:59:42,184 Table.java (line 425) >> > mutating indexed column 737461747573 value 4fec0eee >> > DEBUG [MutationStage:6] 2012-06-28 15:59:42,184 CollationController.java >> > (line 77) collectTimeOrderedData >> > DEBUG [MutationStage:6] 2012-06-28 15:59:42,184 Table.java (line 449) >> > Pre-mutation index row is ColumnFamily(queue >> > [737461747573:false:8@1340870382152000,]) >> > DEBUG [MutationStage:6] 2012-06-28 15:59:42,184 KeysIndex.java (line >> 103) >> > removed index entry for cleaned-up value DecoratedKey(DEQUEUED, >> > 4445515545554544):ColumnFamily(queue.idxStatus >> > [7878323239537570657254616e67307878:true:4@1340870382152000,]) >> > DEBUG [MutationStage:6] 2012-06-28 15:59:42,184 >> RowMutationVerbHandler.java >> > (line 56) RowMutation(keyspace='drc', >> > key='7878323239537570657254616e67307878', >> modifications=[ColumnFamily(queue >> > [737461747573:true:4@1340870382175000,])]) applied. Sending response >> to >> > 6550@/192.168.0.3 >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,187 >> RowMutationVerbHandler.java >> > (line 44) Applying RowMutation(keyspace='drc', >> > key='7878323239537570657254616e67307878', >> modifications=[ColumnFamily(queue >> > -deleted at 1340870382185000- [])]) >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,187 Table.java (line 391) >> > applying mutation of row 7878323239537570657254616e67307878 >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,190 Table.java (line 425) >> > mutating indexed column 6669726554696d65 value null >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,190 Table.java (line 425) >> > mutating indexed column 6669726554696d65536c696365 value null >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,190 Table.java (line 425) >> > mutating indexed column 696e517565756554696d65 value null >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,190 Table.java (line 425) >> > mutating indexed column 696e517565756554696d65536c696365 value null >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,190 Table.java (line 425) >> > mutating indexed column 6d6f54797065 value null >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,190 Table.java (line 425) >> > mutating indexed column 706172746974696f6e value null >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,190 Table.java (line 425) >> > mutating indexed column 7265636569766554696d65 value null >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,190 Table.java (line 425) >> > mutating indexed column 7265636569766554696d65536c696365 value null >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,191 Table.java (line 425) >> > mutating indexed column 7365727669636550726f7669646572 value null >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,191 Table.java (line 425) >> > mutating indexed column 737461747573 value null >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,191 >> CollationController.java >> > (line 77) collectTimeOrderedData >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,191 Table.java (line 449) >> > Pre-mutation index row is ColumnFamily(queue >> > [6669726554696d65:false:13@1340870382109004 >> ,6669726554696d65536c696365:false:13@1340870382109011 >> ,696e517565756554696d65:false:13@1340870382109005 >> ,696e517565756554696d65536c696365:false:13@1340870382109012 >> ,6d6f54797065:false:6@1340870382109009 >> ,706172746974696f6e:false:2@1340870382109001 >> ,7265636569766554696d65:false:13@1340870382109003 >> ,7265636569766554696d65536c696365:false:13@1340870382109010 >> ,7365727669636550726f7669646572:false:4@1340870382109007 >> ,737461747573:true:4@1340870382175000,]) >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,191 Table.java (line 500) >> > skipping index update for obsolete mutation of 737461747573 >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,191 KeysIndex.java (line >> 103) >> > removed index entry for cleaned-up value >> > DecoratedKey(3898026790553046681950927403065, >> > 31333430383730333531373839):ColumnFamily(queue.idxFireTime >> > [7878323239537570657254616e67307878:true:4@1340870382109004,]) >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,192 KeysIndex.java (line >> 103) >> > removed index entry for cleaned-up value >> > DecoratedKey(3898026790552830793920833138736, >> > 31333430383431363030303030):ColumnFamily(queue.idxFireTimeRange >> > [7878323239537570657254616e67307878:true:4@1340870382109011,]) >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,192 KeysIndex.java (line >> 103) >> > removed index entry for cleaned-up value >> > DecoratedKey(3898026790553046681950927403065, >> > 31333430383730333531373839):ColumnFamily(queue.idxInQueueTime >> > [7878323239537570657254616e67307878:true:4@1340870382109005,]) >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,192 KeysIndex.java (line >> 103) >> > removed index entry for cleaned-up value >> > DecoratedKey(3898026790552830793920833138736, >> > 31333430383431363030303030):ColumnFamily(queue.idxInQueueTimeRange >> > [7878323239537570657254616e67307878:true:4@1340870382109012,]) >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,192 KeysIndex.java (line >> 103) >> > removed index entry for cleaned-up value DecoratedKey(TestMo, >> > 546573744d6f):ColumnFamily(queue.idxMoType >> > [7878323239537570657254616e67307878:true:4@1340870382109009,]) >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,193 KeysIndex.java (line >> 103) >> > removed index entry for cleaned-up value DecoratedKey(32, >> > 3332):ColumnFamily(queue.idxPartitionId >> > [7878323239537570657254616e67307878:true:4@1340870382109001,]) >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,193 KeysIndex.java (line >> 103) >> > removed index entry for cleaned-up value >> > DecoratedKey(3898026790553046681950927403065, >> > 31333430383730333531373839):ColumnFamily(queue.idxRecvTime >> > [7878323239537570657254616e67307878:true:4@1340870382109003,]) >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,193 KeysIndex.java (line >> 103) >> > removed index entry for cleaned-up value >> > DecoratedKey(3898026790552830793920833138736, >> > 31333430383431363030303030):ColumnFamily(queue.idxRecvTimeRange >> > [7878323239537570657254616e67307878:true:4@1340870382109010,]) >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,193 KeysIndex.java (line >> 103) >> > removed index entry for cleaned-up value DecoratedKey(test, >> > 74657374):ColumnFamily(queue.idxServiceProvider >> > [7878323239537570657254616e67307878:true:4@1340870382109007,]) >> > DEBUG [MutationStage:10] 2012-06-28 15:59:42,193 >> RowMutationVerbHandler.java >> > (line 56) RowMutation(keyspace='drc', >> > key='7878323239537570657254616e67307878', >> modifications=[ColumnFamily(queue >> > -deleted at 1340870382185000- [])]) applied. Sending response to >> > 6553@/192.168.0.3 >> > DEBUG [ReadStage:17] 2012-06-28 15:59:42,198 CollationController.java >> (line >> > 77) collectTimeOrderedData >> > DEBUG [ReadStage:17] 2012-06-28 15:59:42,199 ReadVerbHandler.java (line >> 58) >> > Read key 7878323239537570657254616e67307878; sending response to >> > 6556@/192.168.0.3 >> > >> > BRs >> > //Ares >> >> >> >> -- >> Jonathan Ellis >> Project Chair, Apache Cassandra >> co-founder of DataStax, the source for professional Cassandra support >> http://www.datastax.com >> > > >