You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Istvan Toth (Jira)" <ji...@apache.org> on 2025/03/14 16:55:00 UTC

[jira] [Created] (HDFS-17759) Explicitly depend on jackson-core in hadoop-hdfs

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-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-help@hadoop.apache.org