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

Francis Liu updated HBASE-20001:
--------------------------------
    Description: 
In RegionStates.cleanIfNoMetaEntry()

{{if (MetaTableAccessor.getRegion(server.getConnection(), 
hri.getEncodedNameAsBytes()) == null) {}}

{{regionOffline(hri);}}

{{FSUtils.deleteRegionDir(server.getConfiguration(), hri);}}
 }

But api expects regionname

{{public static Pair<HRegionInfo, ServerName> getRegion(Connection connection, 
byte [] regionName)}}

So we might end up cleaning good regions.

 

ADDENDUM:

The scenario mentioned occurs when zkless assignment is used.  With zk-based 
assignment without the patch what could occur is the daughter regions are 
offlined and have no hdfs directory but have entries in meta. The daughter meta 
entries will prolly be picked up by the client causing NSREs.

  was:
In RegionStates.cleanIfNoMetaEntry()

{{if (MetaTableAccessor.getRegion(server.getConnection(), 
hri.getEncodedNameAsBytes()) == null) {}}

{{regionOffline(hri);}}

{{FSUtils.deleteRegionDir(server.getConfiguration(), hri);}}
 }

But api expects regionname

{{public static Pair<HRegionInfo, ServerName> getRegion(Connection connection, 
byte [] regionName)}}

So we might end up cleaning good regions.

 

ADDENDUM:

The outcome 


> cleanIfNoMetaEntry() uses encoded instead of region name to lookup region
> -------------------------------------------------------------------------
>
>                 Key: HBASE-20001
>                 URL: https://issues.apache.org/jira/browse/HBASE-20001
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 1.2.0, 1.3.0, 1.4.0, 1.1.7
>            Reporter: Francis Liu
>            Assignee: Thiruvel Thirumoolan
>            Priority: Major
>             Fix For: 1.3.2, 1.5.0, 1.2.7, 1.4.3
>
>         Attachments: HBASE-20001.branch-1.4.001.patch, 
> HBASE-20001.branch-1.4.002.patch, HBASE-20001.branch-1.4.003.patch, 
> HBASE-20001.branch-1.4.004.patch, HBASE-20001.branch-1.4.005.patch
>
>
> In RegionStates.cleanIfNoMetaEntry()
> {{if (MetaTableAccessor.getRegion(server.getConnection(), 
> hri.getEncodedNameAsBytes()) == null) {}}
> {{regionOffline(hri);}}
> {{FSUtils.deleteRegionDir(server.getConfiguration(), hri);}}
>  }
> But api expects regionname
> {{public static Pair<HRegionInfo, ServerName> getRegion(Connection 
> connection, byte [] regionName)}}
> So we might end up cleaning good regions.
>  
> ADDENDUM:
> The scenario mentioned occurs when zkless assignment is used.  With zk-based 
> assignment without the patch what could occur is the daughter regions are 
> offlined and have no hdfs directory but have entries in meta. The daughter 
> meta entries will prolly be picked up by the client causing NSREs.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to