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

Josh Elser commented on HBASE-20111:
------------------------------------

{code}
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
index 70ddbe5..54fb827 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
@@ -173,7 +173,7 @@ public class SplitTableRegionProcedure
     }
 
     if (!splittable) {
-      IOException e = new IOException(regionToSplit.getShortNameToLog() + " 
NOT splittable");
+      IOException e = new 
DoNotRetryIOException(regionToSplit.getShortNameToLog() + " NOT splittable");
       if (splittableCheckIOE != null) e.initCause(splittableCheckIOE);
       throw e;
     }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index 6dbced2..ba38078 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -1732,7 +1732,7 @@ public class RSRpcServices implements 
HBaseRPCErrorHandler,
       if (request.hasCompactionState() && request.getCompactionState()) {
         
builder.setCompactionState(ProtobufUtil.createCompactionState(region.getCompactionState()));
       }
-      builder.setSplittable(region.isSplittable());
+      builder.setSplittable(region.isSplittable() && 
region.getSplitPolicy().shouldSplit());
       builder.setMergeable(region.isMergeable());
       if (request.hasBestSplitRow() && request.getBestSplitRow() && 
bestSplitRow != null) {
         builder.setBestSplitRow(UnsafeByteOperations.unsafeWrap(bestSplitRow));
{code}

I feel like this might incorrectly change the semantics. A region is normally 
un-splittable because of something transient: not closing, not closed, has no 
reference files. The Phoenix case where we are setting a RegionSplitPolicy 
which always returns {{false}} is an edge case -- HBase normally expects split 
policies to return varied results over time (e.g. based on size, busy-ness of 
the region).

Was there another reason you switched this form IOE or DNRIOE?

> Able to split region explicitly even on shouldSplit return false from split 
> policy
> ----------------------------------------------------------------------------------
>
>                 Key: HBASE-20111
>                 URL: https://issues.apache.org/jira/browse/HBASE-20111
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Rajeshbabu Chintaguntla
>            Assignee: Rajeshbabu Chintaguntla
>            Priority: Critical
>             Fix For: 2.0.0
>
>         Attachments: HBASE-20111.patch, HBASE-20111_test.patch
>
>
> Currently able to split the region explicitly even when the split policy 
> returns from shouldSplit.



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

Reply via email to