[ https://issues.apache.org/jira/browse/PHOENIX-3015?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Soldatov updated PHOENIX-3015: ------------------------------------- Attachment: PHOENIX-3015.patch Fixed as suggested. Also changed PhoenixIndexFailurePolicy.java in the same way since we are getting indexes from PTable there as well. > Any metadata changes may cause unpredictable result when local indexes are > using > -------------------------------------------------------------------------------- > > Key: PHOENIX-3015 > URL: https://issues.apache.org/jira/browse/PHOENIX-3015 > Project: Phoenix > Issue Type: Bug > Reporter: Sergey Soldatov > Priority: Critical > Attachments: PHOENIX-3015.patch > > > The problem code is in > IndexHalfStoreFileReaderGenerator#preStoreFileReaderOpen: > {noformat} > conn = > QueryUtil.getConnection(ctx.getEnvironment().getConfiguration()).unwrap( > PhoenixConnection.class); > PTable dataTable = PhoenixRuntime.getTable(conn, > tableName.getNameAsString()); > {noformat} > Use case: > 1. create table & local index. Load some data. > 2. Call split. > 3a. Add new local index. > 3b. Drop local index and recreate it. > 4. Call split. > When the earlier mentioned code is executed during (2) it caches table into > ConnectionQueryServicesImpl#latestMetaData . When it is executed during (4) > dataTable is getting from cache and doesn't reflect information after (3a) or > (3b). As the result the data for last created index will be lost during the > split because of absence of index maintainer. > After looking into ConnectionQueryServicesImpl I don't understand how the > cache was supposed to be updated, so any suggestions/comments are really > appreciated. > [~jamestaylor], [~rajeshbabu] FYI -- This message was sent by Atlassian JIRA (v6.3.4#6332)