cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dominic Letz (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-8547) Make RangeTombstone.Tracker.isDeleted() faster
Date Tue, 06 Jan 2015 02:26:35 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-8547?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Dominic Letz updated CASSANDRA-8547:
------------------------------------
    Attachment: Selection_044.png

Attaching a screenshot of visualvm showing where a typical compaction job is spending its
time for us without the patch.

> Make RangeTombstone.Tracker.isDeleted() faster
> ----------------------------------------------
>
>                 Key: CASSANDRA-8547
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8547
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>         Environment: 2.0.11
>            Reporter: Dominic Letz
>            Assignee: Dominic Letz
>             Fix For: 2.1.3
>
>         Attachments: Selection_044.png, cassandra-2.0.11-8547.txt, cassandra-2.1-8547.txt,
rangetombstone.tracker.txt
>
>
> During compaction and repairs with many tombstones an exorbitant amount of time is spend
in RangeTombstone.Tracker.isDeleted().
> The amount of time spend there can be so big that compactions and repairs look "stalled"
and the time remaining time estimated frozen at the same value for days.
> Using visualvm I've been sample profiling the code during execution and both in Compaction
as well as during repairs found this. (point in time backtraces attached)
> Looking at the code the problem is obviously the linear scanning:
> {code}
>         public boolean isDeleted(Column column)
>         {
>             for (RangeTombstone tombstone : ranges)
>             {
>                 if (comparator.compare(column.name(), tombstone.min) >= 0
>                     && comparator.compare(column.name(), tombstone.max) <=
0
>                     && tombstone.maxTimestamp() >= column.timestamp())
>                 {
>                     return true;
>                 }
>             }
>             return false;
>         }
> {code}
> I would like to propose to change this and instead use a sorted list (e.g. RangeTombstoneList)
here instead.



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

Mime
View raw message