[ https://issues.apache.org/jira/browse/HBASE-21699?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16741591#comment-16741591 ]
Hadoop QA commented on HBASE-21699: ----------------------------------- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 10s{color} | {color:blue} Docker mode activated. {color} | || || || || {color:brown} Prechecks {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:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s{color} | {color:green} The patch appears to include 4 new or modified test files. {color} | || || || || {color:brown} master Compile Tests {color} || | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 26s{color} | {color:blue} Maven dependency ordering for branch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 4m 51s{color} | {color:green} master passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 1m 4s{color} | {color:green} master passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 0m 43s{color} | {color:green} master passed {color} | | {color:green}+1{color} | {color:green} shadedjars {color} | {color:green} 4m 39s{color} | {color:green} branch has no errors when building our shaded downstream artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 1m 0s{color} | {color:green} master passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 30s{color} | {color:green} master passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 14s{color} | {color:blue} Maven dependency ordering for patch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 4m 39s{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 {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} checkstyle {color} | {color:green} 0m 42s{color} | {color:green} the patch passed {color} | | {color:red}-1{color} | {color:red} rubocop {color} | {color:red} 0m 9s{color} | {color:red} The patch generated 17 new + 288 unchanged - 0 fixed = 305 total (was 288) {color} | | {color:orange}-0{color} | {color:orange} ruby-lint {color} | {color:orange} 0m 12s{color} | {color:orange} The patch generated 7 new + 396 unchanged - 0 fixed = 403 total (was 396) {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} 4m 34s{color} | {color:green} patch has no errors when building our shaded downstream artifacts. {color} | | {color:green}+1{color} | {color:green} hadoopcheck {color} | {color:green} 9m 40s{color} | {color:green} Patch does not cause any errors with Hadoop 2.7.4 or 3.0.0. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 1m 6s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 0m 30s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:green}+1{color} | {color:green} unit {color} | {color:green} 3m 12s{color} | {color:green} hbase-client in the patch passed. {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 8m 3s{color} | {color:green} hbase-shell in the patch passed. {color} | | {color:red}-1{color} | {color:red} asflicense {color} | {color:red} 0m 16s{color} | {color:red} The patch generated 1 ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black} 48m 15s{color} | {color:black} {color} | \\ \\ || Subsystem || Report/Notes || | Docker | Client=17.05.0-ce Server=17.05.0-ce Image:yetus/hbase:b002b0b | | JIRA Issue | HBASE-21699 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12954761/HBase-21699.v2.patch | | Optional Tests | dupname asflicense javac javadoc unit findbugs shadedjars hadoopcheck hbaseanti checkstyle compile rubocop ruby_lint | | uname | Linux 7a06f454cfc8 4.4.0-138-generic #164~14.04.1-Ubuntu SMP Fri Oct 5 08:56:16 UTC 2018 x86_64 GNU/Linux | | Build tool | maven | | Personality | /home/jenkins/jenkins-slave/workspace/PreCommit-HBASE-Build/component/dev-support/hbase-personality.sh | | git revision | master / c5691a9f60 | | maven | version: Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T18:33:14Z) | | Default Java | 1.8.0_181 | | findbugs | v3.1.0-RC3 | | rubocop | v0.62.0 | | rubocop | https://builds.apache.org/job/PreCommit-HBASE-Build/15557/artifact/patchprocess/diff-patch-rubocop.txt | | ruby-lint | v2.3.1 | | ruby-lint | https://builds.apache.org/job/PreCommit-HBASE-Build/15557/artifact/patchprocess/diff-patch-ruby-lint.txt | | Test Results | https://builds.apache.org/job/PreCommit-HBASE-Build/15557/testReport/ | | asflicense | https://builds.apache.org/job/PreCommit-HBASE-Build/15557/artifact/patchprocess/patch-asflicense-problems.txt | | Max. process+thread count | 2262 (vs. ulimit of 10000) | | modules | C: hbase-client hbase-shell U: . | | Console output | https://builds.apache.org/job/PreCommit-HBASE-Build/15557/console | | Powered by | Apache Yetus 0.8.0 http://yetus.apache.org | This message was automatically generated. > Create table failed when using SPLITS_FILE => 'splits.txt' > ----------------------------------------------------------- > > Key: HBASE-21699 > URL: https://issues.apache.org/jira/browse/HBASE-21699 > Project: HBase > Issue Type: Bug > Components: Client > Affects Versions: 2.0.0, 2.0.1, 2.1.1, 2.0.2, 2.0.3, 2.1.2, 2.0.4 > Reporter: huan > Priority: Minor > Attachments: HBase-21699.v2.patch, hbase-21699.001.patch > > > Hi all: > When I ran > {code:java} > create 't1', 'f1', SPLITS_FILE => 'splits.txt' > {code} > on HBase2.0.0, it failed, and no detailed error info, just like below: > {code:java} > ERROR: > Creates a table. Pass a table name, and a set of column family > specifications (at least one), and, optionally, table configuration. > Column specification can be a simple string (name), or a dictionary > (dictionaries are described below in main help output), necessarily > including NAME attribute. > Examples: > {code} > So I opened the debug: > {code:java} > hbase shell -d > {code} > and > {code:java} > ERROR: > Backtrace: > org.apache.hadoop.hbase.util.Bytes.toBytes(org/apache/hadoop/hbase/util/Bytes.java:732) > org.apache.hadoop.hbase.HTableDescriptor.setValue(org/apache/hadoop/hbase/HTableDescriptor.java:190){code} > But it works on branch 1.2.0. > so I view the source code, I find the issue is because the below code: > {code:java} > // admin.rb > if arg.key?(SPLITS_FILE) > splits_file = arg.delete(SPLITS_FILE) > unless File.exist?(splits_file) > raise(ArgumentError, "Splits file #{splits_file} doesn't exist") > end > arg[SPLITS] = [] > File.foreach(splits_file) do |line| > arg[SPLITS].push(line.chomp) > end > htd.setValue(SPLITS_FILE, arg[SPLITS_FILE]) > end > {code} > {code:java} > // HTableDescriptor part > public HTableDescriptor setValue(String key, String value) { > getDelegateeForModification().setValue(Bytes.toBytes(key), > Bytes.toBytes(value)); > return this; > } > {code} > {code:java} > // Bytes part > public static byte[] toBytes(String s) { > try { > return s.getBytes(UTF8_CSN); > } catch (UnsupportedEncodingException e) { > // should never happen! > throw new IllegalArgumentException("UTF8 decoding is not supported", e); > } > } > {code} > Call flow is: > {code:java} > admin.rb ---> htd.setValue(SPLITS_FILE, arg[SPLITS_FILE]) ---> > Bytes.toBytes(key) && Bytes.toBytes(value) {code} > from Bytes.toBytes, if s is null, the function will throw > NullPointerException, but HTableDescriptor.setValue(String key, String value) > does not check key and value. > in admin.rb, it use arg.delete(SPLITS_FILE) to get the value, but this means, > after using arg.delete(SPLITS_FILE), arg[SPLITS_FILE] will return nil. so > HTableDescriptor.setValue(String key, String value) does not check key and > value is root cause. > why branch below 2.0.0 works fine, because old code is : > {code:java} > public HTableDescriptor setValue(String key, String value) { > if (value == null) { > remove(key); > } else { > setValue(Bytes.toBytes(key), Bytes.toBytes(value)); > } > return this; > } > {code} > it check the value. > since branch 2.0.0, HBase add new function called 'TableDescriptorBuilder' > it included: > {code:java} > public ModifyableTableDescriptor setValue(String key, String value) { > return setValue(toBytesOrNull(key, Bytes::toBytes), > toBytesOrNull(value, Bytes::toBytes)); > } > {code} > it checked key and value, but HTableDescriptor.setValue(String key, String > value) does not call it, so > just change HTableDescriptor.setValue(String key, String value) to call it, > it will works -- This message was sent by Atlassian JIRA (v7.6.3#76005)