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)

Reply via email to