diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/VersionAnnotation.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/VersionAnnotation.java index db2a1d5b654..34f0336b564 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/VersionAnnotation.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/VersionAnnotation.java @@ -57,4 +57,10 @@ public @interface VersionAnnotation { * @return the revision number as a string (eg. "451451") */ String revision(); + + /** + * Get a checksum of the source files from which HBase was compiled. + * @return a string that uniquely identifies the source + **/ + String srcChecksum(); } diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/VersionInfo.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/VersionInfo.java index 8921935aba4..cd78eba1f30 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/VersionInfo.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/VersionInfo.java @@ -93,11 +93,20 @@ public class VersionInfo { static String[] versionReport() { return new String[] { "HBase " + getVersion(), - "Subversion " + getUrl() + " -r " + getRevision(), - "Compiled by " + getUser() + " on " + getDate() + "Source code repository " + getUrl() + " -r " + getRevision(), + "Compiled by " + getUser() + " on " + getDate(), + "From source with checksum " + getSrcChecksum() }; } + /** + * Get the checksum of the source files from which Hadoop was compiled. + * @return a string that uniquely identifies the source + **/ + public static String getSrcChecksum() { + return version != null ? version.srcChecksum() : "Unknown"; + } + public static void writeTo(PrintWriter out) { for (String line : versionReport()) { out.println(line); diff --git a/hbase-common/src/saveVersion.sh b/hbase-common/src/saveVersion.sh index 5edb8eaddd4..890dc5a8415 100644 --- a/hbase-common/src/saveVersion.sh +++ b/hbase-common/src/saveVersion.sh @@ -41,6 +41,17 @@ else revision="Unknown" url="file://$cwd" fi +which md5sum > /dev/null +if [ "$?" != "0" ] ; then + which md5 > /dev/null + if [ "$?" != "0" ] ; then + srcChecksum="Unknown" + else + srcChecksum=`find hbase-*/src/main/ | grep -e "\.java" -e "\.proto" | LC_ALL=C sort | xargs md5 | md5 | cut -d ' ' -f 1` + fi +else + srcChecksum=`find hbase-*/src/main/ | grep -e "\.java" -e "\.proto" | LC_ALL=C sort | xargs md5sum | md5sum | cut -d ' ' -f 1` +fi popd mkdir -p "$outputDirectory/org/apache/hadoop/hbase" @@ -49,7 +60,8 @@ cat >"$outputDirectory/org/apache/hadoop/hbase/package-info.java" <<% org.apache.hadoop.hbase.util.VersionInfo.getDate() %>, <% org.apache.hadoop.hbase.util.VersionInfo.getUser() %> When HBase version was compiled and by whom + + HBase Source Checksum + <% org.apache.hadoop.util.VersionInfo.getSrcChecksum() %> + HBase source MD5 checksum + Hadoop Version <% org.apache.hadoop.util.VersionInfo.getVersion() %>, r<% org.apache.hadoop.util.VersionInfo.getRevision() %> diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.jamon index 3fcac7325f3..68b4b7d57f9 100644 --- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.jamon +++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.jamon @@ -140,6 +140,11 @@ org.apache.hadoop.hbase.zookeeper.MasterAddressTracker; <% org.apache.hadoop.hbase.util.VersionInfo.getDate() %>, <% org.apache.hadoop.hbase.util.VersionInfo.getUser() %> When HBase version was compiled and by whom + + HBase Source Checksum + <% org.apache.hadoop.util.VersionInfo.getSrcChecksum() %> + HBase source MD5 checksum + Zookeeper Quorum <% regionServer.getZooKeeper().getQuorum() %>