[ 
https://issues.apache.org/jira/browse/HBASE-20741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16551032#comment-16551032
 ] 

Ted Yu edited comment on HBASE-20741 at 7/20/18 5:42 PM:
---------------------------------------------------------

Thanks for the patch, Ram.
{code}
       final RegionInfo hri = 
RegionReplicaUtil.getRegionInfoForReplica(daughter_2_RI, i);
-      procs[procsIdx++] = 
env.getAssignmentManager().createAssignProcedure(hri, targetServer);
+      if (RegionReplicaUtil.isDefaultReplica(hri)) {
+        procs[procsIdx++] = 
env.getAssignmentManager().createAssignProcedure(hri, targetServer);
+      } else {
+        serverIdx = serverIdx % (onlineServers.size());
+        procs[procsIdx++] =
+            env.getAssignmentManager().createAssignProcedure(hri, 
onlineServers.get(serverIdx));
+        serverIdx++;
+      }
{code}
Previously there was only two method calls for each iteration of the loop. Now 
there are several lines of code which are similar for both daughter regions.
Please consider extracting such code into a method.


was (Author: yuzhih...@gmail.com):
Thanks for the patch, Ram.
{code}
       final RegionInfo hri = 
RegionReplicaUtil.getRegionInfoForReplica(daughter_2_RI, i);
-      procs[procsIdx++] = 
env.getAssignmentManager().createAssignProcedure(hri, targetServer);
+      if (RegionReplicaUtil.isDefaultReplica(hri)) {
+        procs[procsIdx++] = 
env.getAssignmentManager().createAssignProcedure(hri, targetServer);
+      } else {
+        serverIdx = serverIdx % (onlineServers.size());
+        procs[procsIdx++] =
+            env.getAssignmentManager().createAssignProcedure(hri, 
onlineServers.get(serverIdx));
+        serverIdx++;
+      }
{code}
Previously there was only one call inside the if block. Now there are several 
lines of code which are similar for both daughter regions.
Please consider extracting such code into a method.

> Split of a region with replicas creates all daughter regions and its replica 
> in same server
> -------------------------------------------------------------------------------------------
>
>                 Key: HBASE-20741
>                 URL: https://issues.apache.org/jira/browse/HBASE-20741
>             Project: HBase
>          Issue Type: Bug
>          Components: read replicas
>    Affects Versions: 2.0.0
>            Reporter: ramkrishna.s.vasudevan
>            Assignee: ramkrishna.s.vasudevan
>            Priority: Major
>             Fix For: 2.2.0
>
>         Attachments: HBASE-20741.patch
>
>
> Generally it is better that the parent region when split creates the daughter 
> region in the same target server. 
> But for replicas also we do the same and all the replica regions are created 
> in the same target server. We should ideally be doing a round robin and only 
> the primary daughter region should be opened in the intended target server 
> (where the parent was previously opened).
> [~huaxiang] FYI.



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

Reply via email to