[ 
https://issues.apache.org/jira/browse/HBASE-1912?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mingjui Ray Liao updated HBASE-1912:
------------------------------------

    Attachment: IndexSpecification.patch
                hbase-site.xml
                IndexedTableTest.java

IndexedTableTest.java is the application for triggering the problem.
hbase-site.xml is the configuration used.


The cause of the NPE is that inside IndexMaintenanceUtils.createIndexUpdate 
function, 
it attempts to iterate through IndexSpecification's additionalColumns without 
first
    checking for null assignment. 
    i.e. 
    for (byte[] col : indexSpec.getAdditionalColumns()) 
    { /* will NPE if additionalColumns = null }
    
Solution:
    There are many places that will attempts to get additionalColumns from the 
IndexSpecification.
    It is best to assign a zero length byte[][] inside the constructor, if the 
additionalColumns is null.

> When adding a secondary index to an existing table, it will cause NPE during 
> re-indexing. 
> ------------------------------------------------------------------------------------------
>
>                 Key: HBASE-1912
>                 URL: https://issues.apache.org/jira/browse/HBASE-1912
>             Project: Hadoop HBase
>          Issue Type: Bug
>          Components: contrib
>    Affects Versions: 0.20.0, 0.20.1
>            Reporter: Mingjui Ray Liao
>            Priority: Minor
>         Attachments: hbase-site.xml, IndexedTableTest.java, 
> IndexSpecification.patch
>
>
> When adding a secondary index to an existing table, an IndexSpecification 
> must be constructed.
> If we construct a simple index using the following constructor: 
> IndexSpecification(String indexId, byte[] indexedColumn), then the program 
> will cause NPE during re-indexing. 
>     
> Exception in thread "main" java.lang.NullPointerException
>         at 
> org.apache.hadoop.hbase.regionserver.tableindexed.IndexMaintenanceUtils.createIndexUpdate(IndexMaintenanceUtils.java:57)
>         at 
> org.apache.hadoop.hbase.client.tableindexed.IndexedTableAdmin.reIndexTable(IndexedTableAdmin.java:144)
>         at 
> org.apache.hadoop.hbase.client.tableindexed.IndexedTableAdmin.addIndex(IndexedTableAdmin.java:132)
>         at 
> MyIndexedTable.addSecondaryIndexToExistingTable(MyIndexedTable.java:256)
>         at MyIndexedTable.main(MyIndexedTable.java:276)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to