[ 
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)

Reply via email to