[ 
https://issues.apache.org/jira/browse/HADOOP-19978?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated HADOOP-19978:
------------------------------------
    Labels: pull-request-available  (was: )

> Upgrade maven-surefire-plugin to 3.6
> ------------------------------------
>
>                 Key: HADOOP-19978
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19978
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: common, test
>            Reporter: Jose Luis López
>            Priority: Major
>              Labels: pull-request-available
>
> h3. Why
> HADOOP-19964 reimplements TimedOutTestsListener as a JUnit Platform
> TestExecutionListener, so a timed-out test prints a thread dump again. The
> {{listener}} provider property that eight poms already carry binds to it only
> once Surefire accepts platform listeners there — SUREFIRE-1639, shipped in
> maven-surefire-plugin 3.6.0. Until Hadoop moves to that version the listener
> is dormant.
> h3. What blocks the upgrade
> Bumping {{maven-surefire-plugin.version}} from 3.5.3 to 3.6.0 turns 5 of 7 CI
> test jobs red: common, mr, hdfs-rbf, hdfs-other, hdfs-slow. Controlled against
> another branch built the same morning on the same runners with 3.5.3, which
> was 7/7 green. Every failure is one fault — the forked JVM preferring IPv6:
> {code:java}
> TestNameNodeRpcServer.testNamenodeRpcBindAny  expected: <0.0.0.0> but was: 
> <0:0:0:0:0:0:0:0>
> TestHSAdminServer   not a valid host:port authority: 0:0:0:0:0:0:0:0:33745
> TestBlockRecovery2  not a valid host:port authority: 0:0:0:0:0:0:0:0:39677
> TestDNS             ArrayIndexOutOfBounds Index 3 out of bounds for length 1
> TestWebHdfsTokens   Connect localhost:44787: Connection refused
> {code}
> hadoop-project.xml sets {{java.net.preferIPv4Stack=true}} in surefire's
> {{{}systemPropertyVariables{}}}. Those are applied by the forked booter, not 
> as
> {{-D}} at JVM startup — in 3.5.3 and 3.6.0 alike. Class-load traces
> ({{{}-Xlog:class+load{}}}) show SystemPropertyManager running at index 699 
> under
> 3.5.3 and 736 under 3.6.0; in that gap 3.6.0 loads {{sun.nio.ch.IOUtil}} and
> {{{}sun.nio.ch.SocketChannelImpl{}}}, where 3.5.3 loads no networking classes 
> at
> all. 3.6.0 initialises the fork's networking before the property lands, so the
> flag is read too late.
> Reported upstream as apache/maven-surefire#3456.
> h3. Changes
>  * Bump {{maven-surefire-plugin.version}} to 3.6.0.
>  * Move {{-Djava.net.preferIPv4Stack=true}} into
> {{maven-surefire-plugin.argLine}} so it is a real JVM startup argument. All
> 22 {{<argLine>}} overrides in the tree already interpolate that property, and
> maven-failsafe-plugin shares it, so it propagates everywhere. No
> property-based fix can work: Surefire initialises networking before applying
> any of them.
>  * Add hadoop-common's test-jar in test scope to hadoop-yarn-services-core and
> hadoop-yarn-applications-catalog-webapp. Both inherit the {{listener}}
> property from hadoop-yarn but depend only on the main jar, so with the
> listener live Surefire cannot resolve the class and the fork dies before any
> test runs. Verified: without the dependency the module reports "Tests run: 0"
> and the fork terminates; with it, tests pass.
> h3. Notes
> Only {{java.net.preferIPv4Stack}} is affected. Checking the other
> systemPropertyVariables against the same criterion — is anything initialised
> before the properties are applied? — {{{}java.security.egd{}}},
> {{{}java.security.krb5.conf{}}}, {{{}hadoop.log.dir{}}}, 
> {{{}hadoop.tmp.dir{}}},
> {{test.build.*}} and {{require.test.libhadoop}} are all read later and are
> unaffected.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to