[ 
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.4.2

> 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, 3.4.2
>
>         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

Reply via email to