Details
-
Task
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
2.7.2
-
None
Description
The Compatibility Docs (https://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/Compatibility.html#Java_API) list the policies for Private, Public, not annotated, etc Classes and members, but it doesn't say what happens when there's a conflict. We should try obviously try to avoid this situation, but it would be good to explicitly state what takes precedence.
As an example, until YARN-3225 made it consistent, RefreshNodesRequest looked like this:
@Private @Stable public abstract class RefreshNodesRequest { @Public @Stable public static RefreshNodesRequest newInstance() { RefreshNodesRequest request = Records.newRecord(RefreshNodesRequest.class); return request; } }
Note that the class is marked @Private, but the method is marked @Public.
In this example, I'd say that the class level should have priority.