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

Duo Zhang commented on HBASE-28297:
-----------------------------------

I think it is just a code bug...

{code}
  protected static final String simple_tsv = "row1\t1\tc1\tc2\n" + 
"row2\t1\tc1\tc2\n"
    + "row3\t1\tc1\tc2\n" + "row4\t1\tc1\tc2\n" + "row5\t1\tc1\tc2\n" + 
"row6\t1\tc1\tc2\n"
    + "row7\t1\tc1\tc2\n" + "row8\t1\tc1\tc2\n" + "row9\t1\tc1\tc2\n" + 
"row10\t1\tc1\tc2\n";

  @Rule
  public TestName name = new TestName();

  protected static final Set<KeyValue> simple_expected =
    new TreeSet<KeyValue>(CellComparator.getInstance()) {
      private static final long serialVersionUID = 1L;
      {
        byte[] family = Bytes.toBytes("d");
        for (String line : Splitter.on('\n').split(simple_tsv)) {
          String[] row = line.split("\t");
          byte[] key = Bytes.toBytes(row[0]);
          long ts = Long.parseLong(row[1]);
          byte[][] fields = { Bytes.toBytes(row[2]), Bytes.toBytes(row[3]) };
          add(new KeyValue(key, family, fields[0], ts, KeyValue.Type.Put, 
fields[0]));
          add(new KeyValue(key, family, fields[1], ts, KeyValue.Type.Put, 
fields[1]));
        }
      }
    };
{code}

There is a "\n" at the end of simple_tsv, so using "\n" to split it will lead 
to an empty string as the last element, and then cause ArrayIndexOutOfBounds 
when parsing this empty string.

Just removing a "\n" or adding an empty array check in the loop can solve the 
problem. I suppose.

> IntegrationTestImportTsv is broken
> ----------------------------------
>
>                 Key: HBASE-28297
>                 URL: https://issues.apache.org/jira/browse/HBASE-28297
>             Project: HBase
>          Issue Type: Bug
>          Components: integration tests, test
>            Reporter: Nihal Jain
>            Assignee: Nihal Jain
>            Priority: Major
>
> While trying to fix HBASE-28295, found issues in IntegrationTestImportTsv
> {code:java}
> mvn --no-snapshot-updates -Dtest=IntegrationTestImportTsv -pl hbase-it 
> package{code}
> {code:java}
> [INFO] -------------------------------------------------------
> [INFO]  T E S T S
> [INFO] -------------------------------------------------------
> [INFO] Running org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv
> [ERROR] Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.563 
> s <<< FAILURE! - in org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv
> [ERROR] org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv  Time 
> elapsed: 0.556 s  <<< ERROR!
> java.lang.ExceptionInInitializerError
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)
>         at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>         at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>         at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>         at 
> org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
>         at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
>         at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>         at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>         at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:316)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155)
>         at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
>         at 
> org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
>         at 
> org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
>         at 
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
>         at 
> org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv$1.<init>(IntegrationTestImportTsv.java:90)
>         at 
> org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv.<clinit>(IntegrationTestImportTsv.java:83)
>         ... 20 more[ERROR] 
> org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv  Time elapsed: 
> 0.557 s  <<< ERROR!
> java.lang.NoClassDefFoundError: Could not initialize class 
> org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)
>         at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>         at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>         at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>         at 
> org.junit.internal.runners.statements.RunAfters.invokeMethod(RunAfters.java:46)
>         at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
>         at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>         at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:316)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155)
>         at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
>         at 
> org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
>         at 
> org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
>         at 
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
> Caused by: java.lang.ExceptionInInitializerError: Exception 
> java.lang.ArrayIndexOutOfBoundsException: 1 [in thread "main"]
>         at 
> org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv$1.<init>(IntegrationTestImportTsv.java:90)
>         at 
> org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv.<clinit>(IntegrationTestImportTsv.java:83)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)
>         at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>         at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>         at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>         at 
> org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
>         at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
>         at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>         ... 10 more[INFO] 
> [INFO] Results:
> [INFO] 
> [ERROR] Errors: 
> [ERROR] org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv.null
> [ERROR]   Run 1: IntegrationTestImportTsv » ExceptionInInitializer
> [ERROR]   Run 2: IntegrationTestImportTsv » NoClassDefFound Could not 
> initialize class org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv
> [INFO] 
> [INFO] 
> [ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
> {code}
> CC: [~zhangduo] 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to