Baiqiang Zhao created HBASE-25861: ------------------------------------- Summary: Correct the usage of Configuration#addDeprecation Key: HBASE-25861 URL: https://issues.apache.org/jira/browse/HBASE-25861 Project: HBase Issue Type: Bug Reporter: Baiqiang Zhao Assignee: Baiqiang Zhao
When I was solving HBASE-25745 ([PR3139|https://github.com/apache/hbase/pull/3139]), I found that our use of Configuration#addDeprecation API was wrong. At present, we will call Configuration#addDeprecation in the static block for the deprecated configuration. But after testing, it is found that this does not complete backward compatibility. When user upgrades HBase and does not change the deprecated configuration to the new configuration, he will find that the deprecated configuration does not effect, which may not be consistent with expectations. The specific test results can be seen in the PR above, and we can found the calling order of Configuration#addDeprecation is very important. Configuration#addDeprecation is a Hadoop API, looking through the Hadoop source code, we will find that before creating the Configuration object, the addDeprecatedKeys() method will be called first: [https://github.com/apache/hadoop/blob/b93e448f9aa66689f1ce5059f6cdce8add130457/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/HdfsConfiguration.java#L34] . -- This message was sent by Atlassian Jira (v8.3.4#803005)