Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
0.23.0
-
None
-
None
-
jar version providers
Description
In 0.20.x, only one jar (hadoop-core-*.jar) really matters. The o.a.h.util.VersionInfo combined with saveVersion.sh script (generating a package level annotation) served us well. For 0.23+, due to the project split and modularization of mapreduce (currently in MR-279), a lot more essential hadoop jars are created. The potential of mixing up the jars is significantly increased as well. We need a simple way to list the version info (version, branch, source checksum etc.) for all the jars involved. This is essential for QE and tracking down various issues.
I propose that we use a VersionProvider interface (similar to the current VersionInfo util class) and ServiceLoader to enumerate the version providers in the jars.
public interface VersionProvider { String getJar(); String getPackage(); String getVersion(); String getRevision(); String getBranch(); String getDate(); String getUrl(); String getSourceChecksum(); }