[jira] [Updated] (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 ] Jason Brown updated CASSANDRA-13075: Resolution: Fixed Fix Version/s: 3.11 4.0 3.0.11 Status: Resolved (was: Ready to Commit) committed to 3.0, 3.11, and trunk as sha {{7a06df79d829ac073264045eb9420a61c5ba939a}}. Thanks! > 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, 4.0, 3.11 > > 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)
[jira] [Updated] (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 ] Alex Petrov updated CASSANDRA-13075: Status: Ready to Commit (was: Patch Available) > 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)
[jira] [Updated] (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 ] Joshua McKenzie updated CASSANDRA-13075: Reviewer: Sergio Bossa > 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)
[jira] [Updated] (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 ] Alex Petrov updated CASSANDRA-13075: Status: Patch Available (was: Open) > 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)
[jira] [Updated] (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 ] Sergio Bossa updated CASSANDRA-13075: - Attachment: CustomIndexTest.java [~ifesdjeen], please see the attached {{CustomIndexTest.java}}: it adds a quickly hacked {{partitionIsNotOverIndexed}} test which shows how the {{finish}} method is invoked twice even if only a single partition with a single row is present. > 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)
[jira] [Updated] (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 ] Joshua McKenzie updated CASSANDRA-13075: Assignee: Alex Petrov > 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 > > 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)