[ 
https://issues.apache.org/jira/browse/CASSANDRA-7817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14106831#comment-14106831
 ] 

Sylvain Lebresne commented on CASSANDRA-7817:
---------------------------------------------

If you question is "is a row tombsone not used?", then a row tombstone is used. 
But if you have a large number of cells/columns for the row in one sstable, and 
have the full row tombstone in another sstable and you do a read, the code has 
no way to know a priori that the row tombstone deletes all the cells/columns: 
it has to read all the cells to check if they are or not deleted by the row 
tombstone. Of course, as soon as both sstables are compacted together, the 
cells will be physically removed (since they are shadowed by the row tombstone) 
and subsequent read will not trigger the tombstone warning.

> when entire row is deleted, the records in the row seem to counted toward 
> TombstoneOverwhelmingException
> --------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-7817
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7817
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: Cassandra version 2.0.9
>            Reporter: Digant Modha
>            Priority: Minor
>
> I saw this behavior in development cluster, but was able to reproduce it in a 
> single node setup.  In development cluster I had more than 52,000 records and 
> used default values for tombstone threshold.
> For testing purpose, I used lower numbers for thresholds:
> tombstone_warn_threshold: 100
> tombstone_failure_threshold: 1000
> Here are the steps:
> table:
> CREATE TABLE cstestcf_conflate_data (
>   key ascii,
>   datehr int,
>   validfrom timestamp,
>   asof timestamp,
>   copied boolean,
>   datacenter ascii,
>   storename ascii,
>   value blob,
>   version ascii,
>   PRIMARY KEY ((key, datehr), validfrom, asof)
> ) WITH CLUSTERING ORDER BY (validfrom DESC, asof DESC) ;
> cqlsh:cstestks> select count(*) from cstestcf_conflate_data WHERE KEY='BK_2' 
> and datehr = 2014082119;
>  count
> -------
>    470
> (1 rows)
> cqlsh:cstestks> delete from cstestcf_conflate_data WHERE KEY='BK_2' and 
> datehr = 2014082119;
> cqlsh:cstestks> select count(*) from cstestcf_conflate_data WHERE KEY='BK_2' 
> and datehr = 2014082119;
> Request did not complete within rpc_timeout.
> Exception in system.log:
> java.lang.RuntimeException: 
> org.apache.cassandra.db.filter.TombstoneOverwhelmingException
>         at 
> org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1931)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>         at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.cassandra.db.filter.TombstoneOverwhelmingException
>         at 
> org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns(SliceQueryFilter.java:202)
>         at 
> org.apache.cassandra.db.filter.QueryFilter.collateColumns(QueryFilter.java:122)
>         at 
> org.apache.cassandra.db.filter.QueryFilter.collateOnDiskAtom(QueryFilter.java:80)
>         at 
> org.apache.cassandra.db.filter.QueryFilter.collateOnDiskAtom(QueryFilter.java:72)
>         at 
> org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:297)
>         at 
> org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:53)
>         at 
> org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1547)
>         at 
> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1376)
>         at org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:333)
>         at 
> org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:65)
>         at 
> org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:1363)
>         at 
> org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1927)



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to