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