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)