Wellington Chevreuil created HBASE-26838:
--------------------------------------------

             Summary: 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
            Reporter: Wellington Chevreuil
            Assignee: Wellington Chevreuil


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