[ 
https://issues.apache.org/jira/browse/HBASE-26838?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Wellington Chevreuil resolved HBASE-26838.
------------------------------------------
    Resolution: Fixed

Merged into master, then cherry-picked into branch-2, branch-2.4 and 
branch-2.4. Thanks for reviewing it, [~elserj] , [~ndimiduk] !

> Junit jar is not included in the hbase tar ball, causing issues for some  
> hbase tools that do rely on it
> --------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-26838
>                 URL: https://issues.apache.org/jira/browse/HBASE-26838
>             Project: HBase
>          Issue Type: Bug
>          Components: integration tests, tooling
>    Affects Versions: 2.5.0, 3.0.0-alpha-2, 2.6.0, 2.4.11
>            Reporter: Wellington Chevreuil
>            Assignee: Wellington Chevreuil
>            Priority: Major
>             Fix For: 2.5.0, 2.6.0, 3.0.0-alpha-3, 2.4.12
>
>
> We used to include junit jar on the generated tar ball lib directory. After 
> some sanitisation of unnecessary libs for most of hbase processes, junit got 
> removed from the packing, so that it don't end in hbase classpath by default. 
> Some testing tools, however do depend on junit at runtime, and would now fail 
> with NoClassDefFoundError, like 
> [IntegrationTestIngest:|https://hbase.apache.org/book.html#chaos.monkey.properties]
> {noformat}
> 2022-03-14T21:54:50,483 INFO  [main] client.AsyncConnectionImpl: Connection 
> has been closed by main.
> Exception in thread "main" java.lang.NoClassDefFoundError: org/junit/Assert
>       at 
> org.apache.hadoop.hbase.IntegrationTestIngest.initTable(IntegrationTestIngest.java:101)
>       at 
> org.apache.hadoop.hbase.IntegrationTestIngest.setUpCluster(IntegrationTestIngest.java:92)
>       at 
> org.apache.hadoop.hbase.IntegrationTestBase.setUp(IntegrationTestBase.java:170)
>       at 
> org.apache.hadoop.hbase.IntegrationTestBase.doWork(IntegrationTestBase.java:153)
>       at 
> org.apache.hadoop.hbase.util.AbstractHBaseTool.run(AbstractHBaseTool.java:153)
>       at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
>       at 
> org.apache.hadoop.hbase.IntegrationTestIngest.main(IntegrationTestIngest.java:259)
> Caused by: java.lang.ClassNotFoundException: org.junit.Assert
>       at 
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
>       at 
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
>       at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>       ... 7 more {noformat}
> Discussing with [~elserj] internally, we believe a reasonable solution would 
> be to include junit jar back into the tarball, under "lib/test" dir so that 
> it's not automatically added to hbase processes classpath, but still allow 
> operators to manually define it in a convenient way, like below:
> {noformat}
> HBASE_CLASSPATH="$HBASE_HOME/lib/tests/*" hbase 
> org.apache.hadoop.hbase.IntegrationTesngest -m slowDeterministic {noformat}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to