Sergio Bossa created CASSANDRA-13075:
----------------------------------------
Summary: Indexer is not correctly invoked when building indexes
over sstables
Key: CASSANDRA-13075
URL: https://issues.apache.org/jira/browse/CASSANDRA-13075
Project: Cassandra
Issue Type: Bug
Reporter: Sergio Bossa
Priority: Critical
Following CASSANDRA-12796, {{SecondaryIndexManager#indexPartition()}} calls
each {{Indexer}} {{begin}} and {{finish}} methods multiple times per partition
(depending on the page size), as {{PartitionIterators#getOnlyElement()}}
returns an empty partition even when the iterator is exhausted.
This leads to bugs for {{Indexer}} implementations doing actual work in those
methods, but even worse, it provides the {{Indexer}} the same input of an empty
partition containing only a non-live partition deletion, as the
{{Indexer#partitionDelete()}} method is *not* actually called.
My proposed solution:
1) Stop the iteration before the empty partition is returned and ingested into
the {{Indexer}}.
2) Actually call the {{Indexer#partitionDelete()}} method inside
{{SecondaryIndexManager#indexPartition()}} (which requires to use a filtered
iterator so it actually contains the deletion info).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)