Skip to content

Conversation

@zabetak
Copy link
Member

@zabetak zabetak commented Jun 11, 2025

Description of PR

The goal is to emit the warning message when deprecated properties are loaded from XML configuration files to inform users that obsolete properties are in use. Before this patch we only inform users when a set/get operation is performed on a deprecated property but this is not sufficient cause if the users/apps are using the new key to obtain the value they will never see the warning. As a result when the property is finally removed or stops taking effect the application will fail or showcase different behavior.

With this patch deprecated properties may be logged twice:

  • when a deprecated prop is loaded from a resource
  • when a deprecated prop is accessed via get/set; if the deprecated key is not accessed no additional log is generated

How was this patch tested?

mvn -pl hadoop-common-project/hadoop-common test -Dtest=TestConf*

For code changes:

  • Does the title or this PR starts with the corresponding JIRA issue id (e.g. 'HADOOP-17799. Your PR title ...')?
  • [] Object storage: have the integration tests been executed and the endpoint declared according to the connector-specific documentation?
  • [] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
  • [] If applicable, have you updated the LICENSE, LICENSE-binary, NOTICE-binary files?

The goal is to emit the warning message when deprecated properties are loaded from XML configuration files to inform users that obsolete properties are in use. Before this patch we only inform users when a set/get operation is performed on a deprecated property but this is not sufficient cause if the users/apps are using the new key to obtain the value they will never see the warning. As a result when the property is finally removed or stops taking effect the application will fail or showcase different behavior.

With this patch deprecated properties may be logged twice:
* when a deprecated prop is loaded from a resource
* when a deprecated prop is accessed via get/set; if the deprecated key is not accessed no additional log is generated
@hadoop-yetus
Copy link

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 9m 48s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 1s codespell was not available.
+0 🆗 detsecrets 0m 1s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 1 new or modified test files.
_ trunk Compile Tests _
+1 💚 mvninstall 24m 24s trunk passed
+1 💚 compile 8m 36s trunk passed with JDK Ubuntu-11.0.27+6-post-Ubuntu-0ubuntu120.04
+1 💚 compile 7m 32s trunk passed with JDK Private Build-1.8.0_452-8u452-gaus1-0ubuntu120.04-b09
+1 💚 checkstyle 0m 34s trunk passed
+1 💚 mvnsite 0m 48s trunk passed
+1 💚 javadoc 0m 42s trunk passed with JDK Ubuntu-11.0.27+6-post-Ubuntu-0ubuntu120.04
+1 💚 javadoc 0m 26s trunk passed with JDK Private Build-1.8.0_452-8u452-gaus1-0ubuntu120.04-b09
+1 💚 spotbugs 1m 26s trunk passed
+1 💚 shadedclient 21m 51s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 34s the patch passed
+1 💚 compile 8m 3s the patch passed with JDK Ubuntu-11.0.27+6-post-Ubuntu-0ubuntu120.04
+1 💚 javac 8m 3s the patch passed
+1 💚 compile 7m 30s the patch passed with JDK Private Build-1.8.0_452-8u452-gaus1-0ubuntu120.04-b09
+1 💚 javac 7m 30s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 0m 37s /results-checkstyle-hadoop-common-project_hadoop-common.txt hadoop-common-project/hadoop-common: The patch generated 4 new + 207 unchanged - 2 fixed = 211 total (was 209)
+1 💚 mvnsite 0m 57s the patch passed
+1 💚 javadoc 0m 45s the patch passed with JDK Ubuntu-11.0.27+6-post-Ubuntu-0ubuntu120.04
+1 💚 javadoc 0m 36s the patch passed with JDK Private Build-1.8.0_452-8u452-gaus1-0ubuntu120.04-b09
+1 💚 spotbugs 1m 33s the patch passed
+1 💚 shadedclient 22m 1s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 16m 46s hadoop-common in the patch passed.
+1 💚 asflicense 0m 44s The patch does not generate ASF License warnings.
137m 28s
Subsystem Report/Notes
Docker ClientAPI=1.50 ServerAPI=1.50 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7737/1/artifact/out/Dockerfile
GITHUB PR #7737
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux b5fe1c928b2a 5.15.0-136-generic #147-Ubuntu SMP Sat Mar 15 15:53:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 1888dea
Default Java Private Build-1.8.0_452-8u452-gaus1-0ubuntu120.04-b09
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.27+6-post-Ubuntu-0ubuntu120.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_452-8u452-gaus1-0ubuntu120.04-b09
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7737/1/testReport/
Max. process+thread count 2152 (vs. ulimit of 5500)
modules C: hadoop-common-project/hadoop-common U: hadoop-common-project/hadoop-common
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7737/1/console
versions git=2.25.1 maven=3.6.3 spotbugs=4.2.2
Powered by Apache Yetus 0.14.0 https://yetus.apache.org

This message was automatically generated.

@slfan1989 slfan1989 requested a review from cnauroth June 12, 2025 06:17
@slfan1989
Copy link
Contributor

@zabetak Thanks for the contribution! @cnauroth Could you help review this PR? Thank you very much!

Copy link
Contributor

@cnauroth cnauroth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you @zabetak !

@cnauroth cnauroth closed this in d52b0f9 Jun 18, 2025
@cnauroth
Copy link
Contributor

I committed this to trunk. @zabetak , thank you for the patch.

@zabetak zabetak deleted the HADOOP-8865 branch June 19, 2025 09:13
@zabetak
Copy link
Member Author

zabetak commented Jun 19, 2025

Thanks for the review @cnauroth , much appreciated!

YanivKunda pushed a commit to YanivKunda/hadoop that referenced this pull request Jul 7, 2025
The goal is to emit the warning message when deprecated properties are loaded from XML configuration files to inform users that obsolete properties are in use. Before this patch we only inform users when a set/get operation is performed on a deprecated property but this is not sufficient cause if the users/apps are using the new key to obtain the value they will never see the warning. As a result when the property is finally removed or stops taking effect the application will fail or showcase different behavior.

With this patch deprecated properties may be logged twice:
* when a deprecated prop is loaded from a resource
* when a deprecated prop is accessed via get/set; if the deprecated key is not accessed no additional log is generated

Closes apache#7737

Signed-off-by: Chris Nauroth <[email protected]>
@cnauroth
Copy link
Contributor

@zabetak and @slfan1989 , sorry, I think we may need to revert #7766 and #7737 . I noticed that all of the deprecation warnings are coming out in shell command output, which is unexpected and may break scripting. These are warnings for properties declared in core-default.xml, so they aren't easily within the user's control.

> bin/hadoop fs -ls gs://cnauroth-bucket
2025-08-29 21:08:04,116 INFO Configuration.deprecation: fs.default.name in core-default.xml is deprecated. Instead, use fs.defaultFS
2025-08-29 21:08:04,311 INFO Configuration.deprecation: fs.default.name in core-default.xml is deprecated. Instead, use fs.defaultFS
2025-08-29 21:08:04,397 INFO Configuration.deprecation: fs.default.name in core-default.xml is deprecated. Instead, use fs.defaultFS
2025-08-29 21:08:04,558 INFO Configuration.deprecation: fs.default.name in core-default.xml is deprecated. Instead, use fs.defaultFS
2025-08-29 21:08:04,724 INFO Configuration.deprecation: io.bytes.per.checksum in core-default.xml is deprecated. Instead, use dfs.bytes-per-checksum
2025-08-29 21:08:04,724 INFO Configuration.deprecation: fs.default.name in core-default.xml is deprecated. Instead, use fs.defaultFS
Found 80 items
...

@slfan1989
Copy link
Contributor

@zabetak and @slfan1989 , sorry, I think we may need to revert #7766 and #7737 . I noticed that all of the deprecation warnings are coming out in shell command output, which is unexpected and may break scripting. These are warnings for properties declared in core-default.xml, so they aren't easily within the user's control.

@cnauroth Thank you for your feedback. I believe rolling back is a feasible option. @zabetak, we really appreciate your contributions, but it seems this has affected some functionality, and a rollback is necessary. If we find a better solution, we will assist with the review.

@zabetak
Copy link
Member Author

zabetak commented Sep 2, 2025

@cnauroth @slfan1989 Thanks for the feedback. Not sure if we should keep discussing here or under a new JIRA ticket but here are few thoughts.

The fact that the built-in config files such as core-default.xml use deprecated properties seems problematic to me. I would argue that once a property is deprecated it shouldn't be used anywhere inside the project. If we agree on this then maybe we should invest some time to remove/replace existing usages of deprecated properties such as fs.default.name.

Moreover, the deprecation warnings can be disabled (or directed to another file) by end-users by changing the respective logging configuration. I am wondering if it is normal/expected to have all logs directed in the console for CLI utilities.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants