cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard Low (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-8414) Avoid loops over array backed iterators that call iter.remove()
Date Mon, 15 Dec 2014 18:25:13 GMT


Richard Low commented on CASSANDRA-8414:

Thanks for writing the patch! A few comments:

- v3 patch has BatchIterator interface missing.
- Some unnecessary formatting changes and import order switching.
- remove method should throw IllegalStateException if called twice on same element to adhere
to Iterator spec.
- Calling commit twice will remove incorrect elements. Should throw IllegalStateException
if commit is called more than once or make it idempotent.
- Could add 'assert test <= src;' to copy method to enforce comment.

> Avoid loops over array backed iterators that call iter.remove()
> ---------------------------------------------------------------
>                 Key: CASSANDRA-8414
>                 URL:
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Richard Low
>            Assignee: Jimmy MÃ¥rdell
>              Labels: performance
>             Fix For: 2.1.3
>         Attachments: cassandra-2.0-8414-1.txt, cassandra-2.0-8414-2.txt, cassandra-2.0-8414-3.txt
> I noticed from sampling that sometimes compaction spends almost all of its time in iter.remove()
in ColumnFamilyStore.removeDeletedStandard. It turns out that the cf object is using ArrayBackedSortedColumns,
so deletes are from an ArrayList. If the majority of your columns are GCable tombstones then
this is O(n^2). The data structure should be changed or a copy made to avoid this.

This message was sent by Atlassian JIRA

View raw message