[ https://issues.apache.org/jira/browse/HBASE-24211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17100352#comment-17100352 ]
HBase QA commented on HBASE-24211: ---------------------------------- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 7m 20s{color} | {color:blue} Docker mode activated. {color} | || || || || {color:brown} Prechecks {color} || | {color:green}+1{color} | {color:green} dupname {color} | {color:green} 0m 0s{color} | {color:green} No case conflicting files found. {color} | | {color:green}+1{color} | {color:green} hbaseanti {color} | {color:green} 0m 0s{color} | {color:green} Patch does not have any anti-patterns. {color} | | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s{color} | {color:green} The patch does not contain any @author tags. {color} | | {color:orange}-0{color} | {color:orange} test4tests {color} | {color:orange} 0m 0s{color} | {color:orange} 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. {color} | || || || || {color:brown} branch-1 Compile Tests {color} || | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 1m 25s{color} | {color:blue} Maven dependency ordering for branch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 8m 8s{color} | {color:green} branch-1 passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 2s{color} | {color:green} branch-1 passed with JDK v1.8.0_252 {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 7s{color} | {color:green} branch-1 passed with JDK v1.7.0_262 {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 2m 13s{color} | {color:green} branch-1 passed {color} | | {color:green}+1{color} | {color:green} shadedjars {color} | {color:green} 3m 8s{color} | {color:green} branch has no errors when building our shaded downstream artifacts. {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 57s{color} | {color:green} branch-1 passed with JDK v1.8.0_252 {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 6s{color} | {color:green} branch-1 passed with JDK v1.7.0_262 {color} | | {color:blue}0{color} | {color:blue} spotbugs {color} | {color:blue} 2m 49s{color} | {color:blue} Used deprecated FindBugs config; considering switching to SpotBugs. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 4m 20s{color} | {color:green} branch-1 passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 16s{color} | {color:blue} Maven dependency ordering for patch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 2m 3s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 0s{color} | {color:green} the patch passed with JDK v1.8.0_252 {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 1m 0s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 4s{color} | {color:green} the patch passed with JDK v1.7.0_262 {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 1m 4s{color} | {color:green} the patch passed {color} | | {color:red}-1{color} | {color:red} checkstyle {color} | {color:red} 0m 36s{color} | {color:red} hbase-client: The patch generated 1 new + 60 unchanged - 0 fixed = 61 total (was 60) {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s{color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} shadedjars {color} | {color:green} 2m 56s{color} | {color:green} patch has no errors when building our shaded downstream artifacts. {color} | | {color:green}+1{color} | {color:green} hadoopcheck {color} | {color:green} 5m 22s{color} | {color:green} Patch does not cause any errors with Hadoop 2.8.5 2.9.2. {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 1s{color} | {color:green} the patch passed with JDK v1.8.0_252 {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 12s{color} | {color:green} the patch passed with JDK v1.7.0_262 {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 4m 29s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:green}+1{color} | {color:green} unit {color} | {color:green} 2m 41s{color} | {color:green} hbase-client in the patch passed. {color} | | {color:red}-1{color} | {color:red} unit {color} | {color:red}135m 49s{color} | {color:red} hbase-server in the patch failed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 1m 5s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}195m 59s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hbase.util.TestHBaseFsck | \\ \\ || Subsystem || Report/Notes || | Docker | Client=19.03.8 Server=19.03.8 base: https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-1658/1/artifact/out/Dockerfile | | GITHUB PR | https://github.com/apache/hbase/pull/1658 | | JIRA Issue | HBASE-24211 | | Optional Tests | dupname asflicense javac javadoc unit spotbugs findbugs shadedjars hadoopcheck hbaseanti checkstyle compile | | uname | Linux 072dd1a7ebf7 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /home/jenkins/jenkins-slave/workspace/Base-PreCommit-GitHub-PR_PR-1658/out/precommit/personality/provided.sh | | git revision | branch-1 / e4dbfe9 | | Default Java | 1.7.0_262 | | Multi-JDK versions | /usr/lib/jvm/zulu-8-amd64:1.8.0_252 /usr/lib/jvm/zulu-7-amd64:1.7.0_262 | | checkstyle | https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-1658/1/artifact/out/diff-checkstyle-hbase-client.txt | | unit | https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-1658/1/artifact/out/patch-unit-hbase-server.txt | | Test Results | https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-1658/1/testReport/ | | Max. process+thread count | 4350 (vs. ulimit of 10000) | | modules | C: hbase-client hbase-server U: . | | Console output | https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-1658/1/console | | versions | git=1.9.1 maven=3.0.5 findbugs=3.0.1 | | Powered by | Apache Yetus 0.11.1 https://yetus.apache.org | This message was automatically generated. > Create table is slow in large cluster when AccessController is enabled. > ----------------------------------------------------------------------- > > Key: HBASE-24211 > URL: https://issues.apache.org/jira/browse/HBASE-24211 > Project: HBase > Issue Type: Bug > Affects Versions: 1.3.6, master, 2.2.4 > Reporter: Mohammad Arshad > Assignee: Mohammad Arshad > Priority: Major > Fix For: 3.0.0-alpha-1, 2.3.0, 1.7.0 > > > *Problem:* > In HBase 1.3.x large, performance test, cluster (100 RS, 60k tables, 600k > regions) a simple table creation takes around 150 seconds. The time taken > varies but still takes lot of time. > *Analysis:* > 1. When HBase creates a table , it calls AssignmentManager#assign(final > ServerName destination, final List<HRegionInfo> regions) > In AssignmentManager#assign,it calls asyncSetOfflineInZooKeeper(state, cb, > destination), and waits in below code loop for 2 minutes. > {code:java} > if (useZKForAssignment) { > // Wait until all unassigned nodes have been put up and watchers > set. > int total = states.size(); > for (int oldCounter = 0; !server.isStopped();) { > int count = counter.get(); > if (oldCounter != count) { > LOG.debug(destination.toString() + " unassigned znodes=" + > count + > " of total=" + total + "; oldCounter=" + oldCounter); > oldCounter = count; > } > if (count >= total) break; > Thread.sleep(5); > } > } > {code} > 2. asyncSetOfflineInZooKeeper creates a znode under > /hbase/region-in-transition/ and calls exist to ensure that znode is created. > This is simple operation should not take much time. Then where the time it > taken!!! > 3. ZooKeeper client API process watcher notification and async API response > through a queue one by one. > If there is a delay in any watcher/response processing by the client, in > this case HBase, all other response processing is delayed. Then it appears as > if API call has taken more time. > Same thing happen in this issue. > Watcher processing for znode creation under /hbase/acl took most of the time > and delayed /hbase/region-in-transition/region znode creation processing. > This is why wait in loop was too long. > 4. Watcher processing for znode creation under hbase/acl/ calls > ZKPermissionWatcher#nodeChildrenChanged, which internally calls > ZKUtil.getChildDataAndWatchForNewChildren > *which calls ZooKeeper's getData API, in this use case, 60k times which > takes most of the time.* > *Solutions:* > Move getChildDataAndWatchForNewChildren call into the async code block in > ZKPermissionWatcher#nodeChildrenChanged. > -- This message was sent by Atlassian Jira (v8.3.4#803005)