Details
Description
IncreasingToUpperBoundRegionSplitPolicy.shouldSplit() return as soon as it found any store big enough to be split. However, it should first go trough all all the stores to make sure they are all splittable before returning.
Attachments
Attachments
- HBASE-9189-v1-0.94.patch
- 2 kB
- Jean-Marc Spaggiari
- HBASE-9189-v0-trunk.patch
- 2 kB
- Jean-Marc Spaggiari
- HBASE-9189-v0-0.94.patch
- 2 kB
- Jean-Marc Spaggiari
Activity
if ((!store.canSplit())) { + foundABigStore = true;
Is the above change intentional ?
> Is the above change intentional ?
Not at all! Updated version attached.. Thanks for looking at it.
Trunk version. Tests passed locally, but I don't really think there is any test testing that.
Looks good. What was the implication of this? We'd get a split request, but then not split because there are unsplittable stores?
-1 overall. Here are the results of testing the latest attachment
http://issues.apache.org/jira/secure/attachment/12597388/HBASE-9189-v0-trunk.patch
against trunk revision .
+1 @author. The patch does not contain any @author tags.
-1 tests included. The patch doesn't appear to include any new or modified tests.
Please justify why no new tests are needed for this patch.
Also please list what manual steps were performed to verify this patch.
+1 hadoop1.0. The patch compiles against the hadoop 1.0 profile.
+1 hadoop2.0. The patch compiles against the hadoop 2.0 profile.
-1 javadoc. The javadoc tool appears to have generated 3 warning messages.
+1 javac. The applied patch does not increase the total number of javac compiler warnings.
+1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.
-1 release audit. The applied patch generated 1 release audit warnings (more than the trunk's current 0 warnings).
+1 lineLengths. The patch does not introduce lines longer than 100
+1 site. The mvn site goal succeeds with this patch.
-1 core tests. The patch failed these unit tests:
Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/6696//testReport/
Release audit warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/6696//artifact/trunk/patchprocess/patchReleaseAuditProblems.txt
Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/6696//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-prefix-tree.html
Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/6696//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-client.html
Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/6696//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/6696//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/6696//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/6696//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/6696//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/6696//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/6696//console
This message is automatically generated.
What was the implication of this? We'd get a split request, but then not split because there are unsplittable stores?
Regions with references will be marked as "splittable". So when the memstore flush and check for compactions, even if there is a reference file they might emit a split request.
However, in the SplitRequest, there is a check for "st.prepare" which will validate if region is splittable which, in turn, will verify if there is references. And if any, will wait. So impact seems to be just few more pending threads waiting for the references on the stores to be removed but I'm not 100% sure if it's the only impact.
Also, DelimitedKeyPrefixRegionSplitPolicy and KeyPrefixRegionSplitPolicy are extending IncreasingToUpperBoundRegionSplitPolicy so are impacted the same way.
Any chance for running the full 0.94 suite, JM? I know this is tiny patch, but changes to the split logic always scare me
Hi lhofhansl,
I already ran it and it passed. Let me restart it right now.
+1
Committed to trunk and 0.95. Thanks JMS.
Will wait on your second test run. If passes I can commit for Lars.
jmspaggi, if it passed before, no need to run it again.
+1 as well. Will commit to 0.94.
SUCCESS: Integrated in HBase-TRUNK #4375 (See https://builds.apache.org/job/HBase-TRUNK/4375/)
HBASE-9189 IncreasingToUpperBoundRegionSplitPolicy.shouldSplit() should check all the stores before returning (stack: rev 1513262)
- /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java
- /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java
FAILURE: Integrated in hbase-0.95-on-hadoop2 #237 (See https://builds.apache.org/job/hbase-0.95-on-hadoop2/237/)
HBASE-9189 IncreasingToUpperBoundRegionSplitPolicy.shouldSplit() should check all the stores before returning (stack: rev 1513263)
- /hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java
- /hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java
SUCCESS: Integrated in HBase-TRUNK-on-Hadoop-2.0.0 #670 (See https://builds.apache.org/job/HBase-TRUNK-on-Hadoop-2.0.0/670/)
HBASE-9189 IncreasingToUpperBoundRegionSplitPolicy.shouldSplit() should check all the stores before returning (stack: rev 1513262)
- /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java
- /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java
FAILURE: Integrated in hbase-0.95 #435 (See https://builds.apache.org/job/hbase-0.95/435/)
HBASE-9189 IncreasingToUpperBoundRegionSplitPolicy.shouldSplit() should check all the stores before returning (stack: rev 1513263)
- /hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java
- /hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java
FAILURE: Integrated in HBase-0.94-security #252 (See https://builds.apache.org/job/HBase-0.94-security/252/)
HBASE-9189 IncreasingToUpperBoundRegionSplitPolicy.shouldSplit() should check all the stores before returning. (Jean-Marc Spaggiari) (larsh: rev 1513304)
- /hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java
- /hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java
FAILURE: Integrated in HBase-0.94 #1104 (See https://builds.apache.org/job/HBase-0.94/1104/)
HBASE-9189 IncreasingToUpperBoundRegionSplitPolicy.shouldSplit() should check all the stores before returning. (Jean-Marc Spaggiari) (larsh: rev 1513304)
- /hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java
- /hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java
jmspaggi Do you think this fail could be related boss: http://54.241.6.143/job/HBase-0.95-Hadoop-2/org.apache.hbase$hbase-server/809/testReport/org.apache.hadoop.hbase.client/TestAdmin/testForceSplitMultiFamily/ ? Thanks.
It failed here too: http://54.241.6.143/job/HBase-0.95-Hadoop-2/org.apache.hbase$hbase-server/809/testReport/junit/org.apache.hadoop.hbase.client/TestAdmin/testForceSplitMultiFamily/ It passed subsequently. My guess is the test doesn't accomodate your change – or it is unrelated. Thanks.
Hum. Patch and tests are both related to split, so can be related, but I will be surprised. Let me re-run that locally and see...
Works for me in trunk. I will try in 0.94 and also export 0.95 and test with it too...
[INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building HBase - Assembly 0.97.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-remote-resources-plugin:1.4:process (default) @ hbase-assembly --- [INFO] [INFO] --- maven-dependency-plugin:2.1:build-classpath (create-hbase-generated-classpath) @ hbase-assembly --- [INFO] Wrote classpath file '/home/jmspaggi/workspace/hbase-TRUNK/hbase-assembly/target/../../target/cached_classpath.txt'. [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] HBase ............................................. SUCCESS [6.128s] [INFO] HBase - Common .................................... SUCCESS [22.205s] [INFO] HBase - Protocol .................................. SUCCESS [0.665s] [INFO] HBase - Client .................................... SUCCESS [19.061s] [INFO] HBase - Hadoop Compatibility ...................... SUCCESS [5.205s] [INFO] HBase - Hadoop One Compatibility .................. SUCCESS [1.108s] [INFO] HBase - Prefix Tree ............................... SUCCESS [2.586s] [INFO] HBase - Server .................................... SUCCESS [1:14:43.249s] [INFO] HBase - Integration Tests ......................... SUCCESS [0.911s] [INFO] HBase - Examples .................................. SUCCESS [3.640s] [INFO] HBase - Assembly .................................. SUCCESS [1.286s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1:15:46.843s [INFO] Finished at: Tue Aug 13 13:03:41 EDT 2013 [INFO] Final Memory: 48M/538M [INFO] ------------------------------------------------------------------------
We've had a clean 0.94 (both Apache Jenkins and EC2) with this patch.
Yeah, I had some subsequent good builds too. Was wondering if related or if we made a new flakey? No worries jmspaggi. If you see nothing, I can keep an eye on it....
I just got 0.94 passed too:
Results :
Tests run: 1378, Failures: 0, Errors: 0, Skipped: 13
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:20:03.365s
[INFO] Finished at: Tue Aug 13 15:10:05 EDT 2013
[INFO] Final Memory: 36M/470M
[INFO] ------------------------------------------------------------------------
jmspaggi@buldo:~/workspace/hbase-0.94.11-SNAPSHOT$
So we should be fine. Just ping me if there is anything I need to loop at, I will be happy to.
Patch for 0.94 attached. Ran the tests successfuly for it. Tests running for the trunk version...