[
https://issues.apache.org/jira/browse/CASSANDRA-9196?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sam Tunnicliffe updated CASSANDRA-9196:
---------------------------------------
Attachment: 2.1-CASSANDRA-9196.txt
The patch looks good for 2.0, but it won't work for 2.1/trunk. The reason being
that {{indexes()}} now takes a {{CellName}} rather than a {{ByteBuffer}}
containing the column name and we can't construct one in {{maybeRebuildIndex}}.
I've attached an alternative patch for 2.1+ that adds that an
{{indexes(ColumnDefinition)}} overload, with the default implementation on
{{SecondaryIndex}} simply checking if the supplied {{ColumnDefinition}} is
present in the index's {{columnDefs}}.
> Do not rebuild indexes if no columns are actually indexed
> ---------------------------------------------------------
>
> Key: CASSANDRA-9196
> URL: https://issues.apache.org/jira/browse/CASSANDRA-9196
> Project: Cassandra
> Issue Type: Improvement
> Components: Core
> Reporter: Sergio Bossa
> Assignee: Sergio Bossa
> Fix For: 2.0.15
>
> Attachments: 2.0-CASSANDRA-9196.txt, 2.1-CASSANDRA-9196.txt
>
>
> When rebuilding secondary indexes, the index task is executed regardless if
> the actual {{SecondaryIndex#indexes(ByteBuffer )}} implementation of any
> index returns true for any column, meaning that the expensive task of going
> through all sstables and related rows will be executed even if in the end no
> column/row will be actually indexed.
> This is a huge performance hit when i.e. bootstrapping with large datasets on
> tables having custom secondary index implementations whose {{indexes()}}
> implementation might return false.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)