Istvan Toth created HDFS-17759:
----------------------------------

             Summary: Explicitly depend on jackson-core in hadoop-hdfs
                 Key: HDFS-17759
                 URL: https://issues.apache.org/jira/browse/HDFS-17759
             Project: Hadoop HDFS
          Issue Type: Bug
          Components: hdfs
    Affects Versions: 3.4.1, 3.5.0
            Reporter: Istvan Toth
            Assignee: Istvan Toth
         Attachments: deptree.current, deptree.patched

HDFS does not depend on jacks-core, even though it directly uses it.
Apart from being a bad practice, this breaks consumers of Hadoop.

Hadoop builds are not affected, because the and old incompatible jackson-core 
is brought in via hadoop-common and Avro, which is then dependencyManaged to 
the correct version.

Howerver, this dependencyManagement does not apply to consumers of Hadoop, 
which get the original old incompatible jackson-core.

Unless those projects happen to already correctly manage the jackson versions, 
they will fail with something like this:


{noformat}
java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/JacksonFeature
3456    at 
com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:656)
3457    at 
com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:558)
3458    at 
org.apache.hadoop.hdfs.server.blockmanagement.SlowPeerTracker.<clinit>(SlowPeerTracker.java:78)
3459    at 
org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.initSlowPeerTracker(DatanodeManager.java:373)
3460    at 
org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.<init>(DatanodeManager.java:263)
3461    at 
org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.<init>(BlockManager.java:502)
3462    at 
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:926)
3463    at 
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:851)
3464    at 
org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1396)
3465    at 
org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:495)
3466    at 
org.apache.hadoop.hdfs.DFSTestUtil.formatNameNode(DFSTestUtil.java:256)
3467    at 
org.apache.hadoop.hdfs.MiniDFSCluster.configureNameService(MiniDFSCluster.java:1158)
3468    at 
org.apache.hadoop.hdfs.MiniDFSCluster.createNameNodesAndSetConf(MiniDFSCluster.java:1042)
3469    at 
org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:974)
3470    at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:888)
3471    at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniDFSCluster(HBaseTestingUtility.java:689)
3472    at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniDFSCluster(HBaseTestingUtility.java:669)
3473    at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster(HBaseTestingUtility.java:1141)
3474    at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster(HBaseTestingUtility.java:1106)
3475    at 
org.apache.omid.timestamp.storage.TestHBaseTimestampStorage.setUpClass(TestHBaseTimestampStorage.java:65)
3476    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
3477    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
3478    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
3479    at java.lang.reflect.Method.invoke(Method.java:498)
3480    at 
org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
3481    at 
org.testng.internal.invokers.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:65)
3482    at 
org.testng.internal.invokers.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:381)
3483    at 
org.testng.internal.invokers.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:319)
3484    at 
org.testng.internal.invokers.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:178)
3485    at 
org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:122)
3486    at java.util.ArrayList.forEach(ArrayList.java:1259)
3487    at org.testng.TestRunner.privateRun(TestRunner.java:808)
3488    at org.testng.TestRunner.run(TestRunner.java:603)
3489    at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
3490    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
3491    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
3492    at org.testng.SuiteRunner.run(SuiteRunner.java:326)
3493    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
3494    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
3495    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
3496    at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
3497    at org.testng.TestNG.runSuites(TestNG.java:1092)
3498    at org.testng.TestNG.run(TestNG.java:1060)
3499    at 
org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
3500    at 
org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeSingleClass(TestNGDirectoryTestSuite.java:102)
3501    at 
org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:91)
3502    at 
org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
3503    at 
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
3504    at 
org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
3505    at 
org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
3506    at 
org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
3507Caused by: java.lang.ClassNotFoundException: 
com.fasterxml.jackson.core.util.JacksonFeature
3508    at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
3509    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
3510    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
3511    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
3512    ... 51 more{noformat}

For reference, I'm attaching the dependency tree output from a project trying 
to use HDFS Minicluster with and without the patch.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org

Reply via email to