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

Sean Busbey updated HBASE-18247:
--------------------------------
      Resolution: Fixed
    Release Note: The hbck tool can no correct the meta table should it get an 
entry for a read replica region.
          Status: Resolved  (was: Patch Available)

Filed HBASE-19063 for the master/branch-2 work. Closing this out since it is in 
version(s) nearing release.

> Hbck to fix the case that replica region shows as key in the meta table
> -----------------------------------------------------------------------
>
>                 Key: HBASE-18247
>                 URL: https://issues.apache.org/jira/browse/HBASE-18247
>             Project: HBase
>          Issue Type: Bug
>          Components: hbck, Operability
>    Affects Versions: 2.0.0-alpha-1
>            Reporter: huaxiang sun
>            Assignee: huaxiang sun
>            Priority: Minor
>             Fix For: 1.4.0, 1.3.2, 1.5.0, 1.2.7
>
>         Attachments: HBASE-18247-branch-1.2-v001.patch
>
>
> Recently, we run into one case with read replica, the replica region shows up 
> as key in meta table (it is not supposed to happen, we are still working on 
> why it showed up in the meta table).
> However, hbck always reported the error about the primary region. Please see 
> the error attached.
> {code}
> The entry in meta table
> test,92b0201b,1492546349354_0001.c3e6f235fe7caef75f8b0fb92a012da3. 
> column=info:regioninfo, timestamp=1494958820573, value={ENCODED => 
> c3e6f235fe7caef75f8b0fb92a012da3, NAME => 
> 'test,92b0201b,1492546349354_0001.c3e6f235fe7caef75f8b0fb92a012da3.', 
> STARTKEY => '92b0201b', ENDKEY => '92f1a952', REPLICA_ID => 1}
> ERROR: Region { meta => 
> test,92b0201b,1492546349354.d2c637715f31a072f174e70d407fb458., hdfs => null, 
> deployed => , replicaId => 0 } found in META, but not in HDFS or deployed on 
> any region server.
> {code}
> Traced the code, in the following line, it does not consider the case that 
> replicaId in regionInfo could be non-default. 
> https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/MetaTableAccessor.java#L985
> If it is changed to get replicaId from regionInfo, then hbck should be able 
> to fix this by "-fixMeta".
> {code}
> diff --git 
> a/hbase-client/src/main/java/org/apache/hadoop/hbase/MetaTableAccessor.java 
> b/hbase-client/src/main/java/org/apache/hadoop/hbase/MetaTableAccessor.java
> index 9eb5111..1649e53 100644
> --- 
> a/hbase-client/src/main/java/org/apache/hadoop/hbase/MetaTableAccessor.java
> +++ 
> b/hbase-client/src/main/java/org/apache/hadoop/hbase/MetaTableAccessor.java
> @@ -982,7 +982,7 @@ public class MetaTableAccessor {
>      List<HRegionLocation> locations = new ArrayList<>(1);
>      NavigableMap<byte[],NavigableMap<byte[],byte[]>> familyMap = 
> r.getNoVersionMap();
>  
> -    locations.add(getRegionLocation(r, regionInfo, 0));
> +    locations.add(getRegionLocation(r, regionInfo, 
> regionInfo.getReplicaId()));
>  
>      NavigableMap<byte[], byte[]> infoMap = familyMap.get(getCatalogFamily());
>      if (infoMap == null) return new RegionLocations(locations);
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to