[ https://issues.apache.org/jira/browse/CASSANDRA-13075?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15828347#comment-15828347 ]
Sergio Bossa commented on CASSANDRA-13075: ------------------------------------------ Looks better now [~ifesdjeen]! Just a few more points: 1) As you mentioned, it is missing a test with range tombstones crossing pages. 2) [This|https://github.com/ifesdjeen/cassandra/commit/7aa0c7c41960ed11b35545c49ca7e8f869f76e2f#diff-13cb97758bcb11cce8fc6f4cb1990dd6R729] should use {{pageSize}}. 3) [This|https://github.com/ifesdjeen/cassandra/commit/7aa0c7c41960ed11b35545c49ca7e8f869f76e2f#diff-13cb97758bcb11cce8fc6f4cb1990dd6R785] should be probably replaced with {{StubIndex}} (I've used that other one just as quick hack). > 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 > Assignee: Alex Petrov > Priority: Critical > Attachments: CustomIndexTest.java > > > 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)