You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Michael Shuler (JIRA)" <ji...@apache.org> on 2017/01/31 21:06:51 UTC
[jira] (CASSANDRA-13075) Indexer is not correctly invoked when
building indexes over sstables
[ https://issues.apache.org/jira/browse/CASSANDRA-13075?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Shuler updated CASSANDRA-13075:
---------------------------------------
Fix Version/s: (was: 3.11)
3.10
> 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
> Fix For: 3.0.11, 3.10, 4.0
>
> 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.15#6346)