[ https://issues.apache.org/jira/browse/HDFS-17759?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Shilun Fan updated HDFS-17759: ------------------------------ Fix Version/s: 3.5.0 Hadoop Flags: Reviewed Target Version/s: 3.5.0 Resolution: Fixed Status: Resolved (was: Patch Available) > 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 > Priority: Critical > Labels: pull-request-available > Fix For: 3.5.0 > > Attachments: deptree.current, deptree.patched > > > HDFS does not depend on jackson-core, even though it directly uses it. > Apart from being a bad practice, this breaks consumers of Hadoop. > Hadoop builds are not affected, because and old incompatible jackson-core is > brought in via hadoop-common via 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-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org