You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Benedict (JIRA)" <ji...@apache.org> on 2015/05/26 21:39:17 UTC

[jira] [Created] (CASSANDRA-9486) LazilyCompactedRow accumulates all expired RangeTombstones

Benedict created CASSANDRA-9486:
-----------------------------------

             Summary: LazilyCompactedRow accumulates all expired RangeTombstones
                 Key: CASSANDRA-9486
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9486
             Project: Cassandra
          Issue Type: Bug
          Components: Core
            Reporter: Benedict
            Assignee: Marcus Eriksson
             Fix For: 1.2.x, 3.x, 2.1.x, 2.0.x, 2.2.x


LazilyCompactedRow initializes a ColumnIndex.Builder to use its RangeTombstone.Tracker, but it only calls update() with a RT argument, never an atom. The Tracker only ever _adds_ if it receives a RT, never removes. So all the RT ever seen for the partition (that have expired) remain in memory until the compaction completes. To make matters worse, this then forces a linear scan of all of these RT for each live cell we add, so this extra load hangs around for a long time, and compactions stall.

This issue is biting one of our users badly (at least, it seems likely to be this issue), and there may be others. This user is not even making use of RT extensively themselves, only collections (presumably with a complete overwrite of the contents of the collection, resulting in a RT being generated).

Probably the best solution is to make the RT addition itself remove any already present that are no longer helpful.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)