cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-7817) when entire row is deleted, the records in the row seem to counted toward TombstoneOverwhelmingException
Date Fri, 22 Aug 2014 13:46:11 GMT

    [ 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)

Mime
View raw message