This is an automated email from the ASF dual-hosted git repository. nanda pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/hadoop.git
commit 45c4cfe790bd6d7962698555c634a42b38c6cad1 Author: Nanda kumar <[email protected]> AuthorDate: Fri Jan 25 12:16:29 2019 +0530 HDDS-906. Display the ozone version on SCM/OM web ui instead of Hadoop version. Contributed by Doroszlai, Attila. --- .../org/apache/hadoop/utils/HddsVersionInfo.java | 70 ++------------------ .../{HddsVersionInfo.java => VersionInfo.java} | 65 +++++++------------ .../hadoop/hdds/server/ServiceRuntimeInfoImpl.java | 15 +++-- .../hdds/scm/server/StorageContainerManager.java | 24 ++++--- .../apache/hadoop/ozone/util/OzoneVersionInfo.java | 75 ++-------------------- .../hadoop/ozone/TestStorageContainerManager.java | 6 ++ .../apache/hadoop/ozone/om/TestOzoneManager.java | 8 +++ .../org/apache/hadoop/ozone/om/OzoneManager.java | 2 + 8 files changed, 68 insertions(+), 197 deletions(-) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/HddsVersionInfo.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/HddsVersionInfo.java index 88b61f6..13c62b7 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/HddsVersionInfo.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/HddsVersionInfo.java @@ -20,86 +20,24 @@ package org.apache.hadoop.utils; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; -import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.util.ClassUtil; -import org.apache.hadoop.util.ThreadUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - /** * This class returns build information about Hadoop components. */ @InterfaceAudience.Public @InterfaceStability.Stable -public class HddsVersionInfo { +public final class HddsVersionInfo { private static final Logger LOG = LoggerFactory.getLogger( HddsVersionInfo.class); - public static final HddsVersionInfo HDDS_VERSION_INFO = - new HddsVersionInfo("hdds"); - - private Properties info; - - protected HddsVersionInfo(String component) { - info = new Properties(); - String versionInfoFile = component + "-version-info.properties"; - InputStream is = null; - try { - is = ThreadUtil.getResourceAsStream( - HddsVersionInfo.class.getClassLoader(), - versionInfoFile); - info.load(is); - } catch (IOException ex) { - LoggerFactory.getLogger(getClass()).warn("Could not read '" + - versionInfoFile + "', " + ex.toString(), ex); - } finally { - IOUtils.closeStream(is); - } - } - - protected String getVersion() { - return info.getProperty("version", "Unknown"); - } + public static final VersionInfo HDDS_VERSION_INFO = + new VersionInfo("hdds"); - protected String getRevision() { - return info.getProperty("revision", "Unknown"); - } - - protected String getBranch() { - return info.getProperty("branch", "Unknown"); - } - - protected String getDate() { - return info.getProperty("date", "Unknown"); - } - - protected String getUser() { - return info.getProperty("user", "Unknown"); - } - - protected String getUrl() { - return info.getProperty("url", "Unknown"); - } - - protected String getSrcChecksum() { - return info.getProperty("srcChecksum", "Unknown"); - } - - public String getBuildVersion() { - return HDDS_VERSION_INFO.getVersion() + - " from " + HDDS_VERSION_INFO.getRevision() + - " by " + getUser() + - " source checksum " + getSrcChecksum(); - } - - protected String getProtocVersion() { - return info.getProperty("protocVersion", "Unknown"); - } + private HddsVersionInfo() {} public static void main(String[] args) { System.out.println("Using HDDS " + HDDS_VERSION_INFO.getVersion()); diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/HddsVersionInfo.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/VersionInfo.java similarity index 59% copy from hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/HddsVersionInfo.java copy to hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/VersionInfo.java index 88b61f6..9b86934 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/HddsVersionInfo.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/VersionInfo.java @@ -15,15 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.hadoop.utils; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; import org.apache.hadoop.io.IOUtils; -import org.apache.hadoop.util.ClassUtil; import org.apache.hadoop.util.ThreadUtil; -import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; @@ -35,24 +32,17 @@ import java.util.Properties; */ @InterfaceAudience.Public @InterfaceStability.Stable -public class HddsVersionInfo { - - private static final Logger LOG = LoggerFactory.getLogger( - HddsVersionInfo.class); +public class VersionInfo { - public static final HddsVersionInfo HDDS_VERSION_INFO = - new HddsVersionInfo("hdds"); + private final Properties info = new Properties(); - private Properties info; - - protected HddsVersionInfo(String component) { - info = new Properties(); + public VersionInfo(String component) { String versionInfoFile = component + "-version-info.properties"; InputStream is = null; try { is = ThreadUtil.getResourceAsStream( - HddsVersionInfo.class.getClassLoader(), - versionInfoFile); + getClass().getClassLoader(), + versionInfoFile); info.load(is); } catch (IOException ex) { LoggerFactory.getLogger(getClass()).warn("Could not read '" + @@ -62,57 +52,46 @@ public class HddsVersionInfo { } } - protected String getVersion() { + public String getRelease() { + return info.getProperty("release", "Unknown"); + } + + public String getVersion() { return info.getProperty("version", "Unknown"); } - protected String getRevision() { + public String getRevision() { return info.getProperty("revision", "Unknown"); } - protected String getBranch() { + public String getBranch() { return info.getProperty("branch", "Unknown"); } - protected String getDate() { + public String getDate() { return info.getProperty("date", "Unknown"); } - protected String getUser() { + public String getUser() { return info.getProperty("user", "Unknown"); } - protected String getUrl() { + public String getUrl() { return info.getProperty("url", "Unknown"); } - protected String getSrcChecksum() { + public String getSrcChecksum() { return info.getProperty("srcChecksum", "Unknown"); } - public String getBuildVersion() { - return HDDS_VERSION_INFO.getVersion() + - " from " + HDDS_VERSION_INFO.getRevision() + - " by " + getUser() + - " source checksum " + getSrcChecksum(); - } - - protected String getProtocVersion() { + public String getProtocVersion() { return info.getProperty("protocVersion", "Unknown"); } - public static void main(String[] args) { - System.out.println("Using HDDS " + HDDS_VERSION_INFO.getVersion()); - System.out.println( - "Source code repository " + HDDS_VERSION_INFO.getUrl() + " -r " + - HDDS_VERSION_INFO.getRevision()); - System.out.println("Compiled by " + HDDS_VERSION_INFO.getUser() + " on " - + HDDS_VERSION_INFO.getDate()); - System.out.println( - "Compiled with protoc " + HDDS_VERSION_INFO.getProtocVersion()); - System.out.println( - "From source with checksum " + HDDS_VERSION_INFO.getSrcChecksum()); - LOG.debug("This command was run using " + - ClassUtil.findContainingJar(HddsVersionInfo.class)); + public String getBuildVersion() { + return getVersion() + + " from " + getRevision() + + " by " + getUser() + + " source checksum " + getSrcChecksum(); } } diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/ServiceRuntimeInfoImpl.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/ServiceRuntimeInfoImpl.java index 36d6b64..850d96e 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/ServiceRuntimeInfoImpl.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/ServiceRuntimeInfoImpl.java @@ -17,7 +17,7 @@ package org.apache.hadoop.hdds.server; -import org.apache.hadoop.util.VersionInfo; +import org.apache.hadoop.utils.VersionInfo; /** * Helper base class to report the standard version and runtime information. @@ -26,21 +26,26 @@ import org.apache.hadoop.util.VersionInfo; public class ServiceRuntimeInfoImpl implements ServiceRuntimeInfo { private long startedTimeInMillis; + private final VersionInfo versionInfo; + + protected ServiceRuntimeInfoImpl(VersionInfo versionInfo) { + this.versionInfo = versionInfo; + } @Override public String getVersion() { - return VersionInfo.getVersion() + ", r" + VersionInfo.getRevision(); + return versionInfo.getVersion() + ", r" + versionInfo.getRevision(); } @Override public String getSoftwareVersion() { - return VersionInfo.getVersion(); + return versionInfo.getVersion(); } @Override public String getCompileInfo() { - return VersionInfo.getDate() + " by " + VersionInfo.getUser() + " from " - + VersionInfo.getBranch(); + return versionInfo.getDate() + " by " + versionInfo.getUser() + " from " + + versionInfo.getBranch(); } @Override diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java index a7949db..ca98033 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java @@ -44,20 +44,17 @@ import org.apache.hadoop.hdds.scm.command.CommandStatusReportHandler; import org.apache.hadoop.hdds.scm.container.CloseContainerEventHandler; import org.apache.hadoop.hdds.scm.container.ContainerActionsHandler; import org.apache.hadoop.hdds.scm.container.ContainerID; +import org.apache.hadoop.hdds.scm.container.ContainerInfo; import org.apache.hadoop.hdds.scm.container.ContainerManager; +import org.apache.hadoop.hdds.scm.container.ContainerReportHandler; import org.apache.hadoop.hdds.scm.container.IncrementalContainerReportHandler; import org.apache.hadoop.hdds.scm.container.SCMContainerManager; -import org.apache.hadoop.hdds.scm.container.ContainerReportHandler; -import org.apache.hadoop.hdds.scm.container.replication - .ReplicationActivityStatus; -import org.apache.hadoop.hdds.scm.container.replication.ReplicationManager; -import org.apache.hadoop.hdds.scm.container.ContainerInfo; -import org.apache.hadoop.hdds.scm.container.placement.algorithms - .ContainerPlacementPolicy; -import org.apache.hadoop.hdds.scm.container.placement.algorithms - .SCMContainerPlacementCapacity; +import org.apache.hadoop.hdds.scm.container.placement.algorithms.ContainerPlacementPolicy; +import org.apache.hadoop.hdds.scm.container.placement.algorithms.SCMContainerPlacementCapacity; import org.apache.hadoop.hdds.scm.container.placement.metrics.ContainerStat; import org.apache.hadoop.hdds.scm.container.placement.metrics.SCMMetrics; +import org.apache.hadoop.hdds.scm.container.replication.ReplicationActivityStatus; +import org.apache.hadoop.hdds.scm.container.replication.ReplicationManager; import org.apache.hadoop.hdds.scm.events.SCMEvents; import org.apache.hadoop.hdds.scm.exceptions.SCMException; import org.apache.hadoop.hdds.scm.exceptions.SCMException.ResultCodes; @@ -95,8 +92,7 @@ import org.apache.hadoop.security.authentication.client.AuthenticationException; import org.apache.hadoop.util.GenericOptionsParser; import org.apache.hadoop.util.JvmPauseMonitor; import org.apache.hadoop.util.StringUtils; - - +import org.apache.hadoop.utils.HddsVersionInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -110,10 +106,11 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.TimeUnit; + +import static org.apache.hadoop.hdds.scm.ScmConfigKeys.HDDS_SCM_KERBEROS_KEYTAB_FILE_KEY; +import static org.apache.hadoop.hdds.scm.ScmConfigKeys.HDDS_SCM_KERBEROS_PRINCIPAL_KEY; import static org.apache.hadoop.hdds.scm.ScmConfigKeys.HDDS_SCM_WATCHER_TIMEOUT_DEFAULT; import static org.apache.hadoop.ozone.OzoneConfigKeys.OZONE_ENABLED; -import static org.apache.hadoop.hdds.scm.ScmConfigKeys.HDDS_SCM_KERBEROS_PRINCIPAL_KEY; -import static org.apache.hadoop.hdds.scm.ScmConfigKeys.HDDS_SCM_KERBEROS_KEYTAB_FILE_KEY; import static org.apache.hadoop.util.ExitUtil.terminate; /** @@ -209,6 +206,7 @@ public final class StorageContainerManager extends ServiceRuntimeInfoImpl */ private StorageContainerManager(OzoneConfiguration conf) throws IOException, AuthenticationException { + super(HddsVersionInfo.HDDS_VERSION_INFO); configuration = conf; StorageContainerManager.initMetrics(); diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/util/OzoneVersionInfo.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/util/OzoneVersionInfo.java index c408b03..8378c5f 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/util/OzoneVersionInfo.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/util/OzoneVersionInfo.java @@ -20,90 +20,25 @@ package org.apache.hadoop.ozone.util; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; -import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.util.ClassUtil; -import org.apache.hadoop.util.ThreadUtil; import org.apache.hadoop.utils.HddsVersionInfo; +import org.apache.hadoop.utils.VersionInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - /** * This class returns build information about Hadoop components. */ @InterfaceAudience.Public @InterfaceStability.Stable -public class OzoneVersionInfo { +public final class OzoneVersionInfo { private static final Logger LOG = LoggerFactory.getLogger(OzoneVersionInfo.class); - private Properties info; - - protected OzoneVersionInfo(String component) { - info = new Properties(); - String versionInfoFile = component + "-version-info.properties"; - InputStream is = null; - try { - is = ThreadUtil - .getResourceAsStream(OzoneVersionInfo.class.getClassLoader(), - versionInfoFile); - info.load(is); - } catch (IOException ex) { - LoggerFactory.getLogger(getClass()).warn("Could not read '" + - versionInfoFile + "', " + ex.toString(), ex); - } finally { - IOUtils.closeStream(is); - } - } - - protected String getVersion() { - return info.getProperty("version", "Unknown"); - } - - protected String getRelease() { - return info.getProperty("release", "Unknown"); - } - - protected String getRevision() { - return info.getProperty("revision", "Unknown"); - } - - protected String getBranch() { - return info.getProperty("branch", "Unknown"); - } - - protected String getDate() { - return info.getProperty("date", "Unknown"); - } - - protected String getUser() { - return info.getProperty("user", "Unknown"); - } - - protected String getUrl() { - return info.getProperty("url", "Unknown"); - } - - protected String getSrcChecksum() { - return info.getProperty("srcChecksum", "Unknown"); - } - - protected String getBuildVersion() { - return getVersion() + - " from " + getRevision() + - " by " + getUser() + - " source checksum " + getSrcChecksum(); - } - - protected String getProtocVersion() { - return info.getProperty("protocVersion", "Unknown"); - } + public static final VersionInfo OZONE_VERSION_INFO = + new VersionInfo("ozone"); - private static final OzoneVersionInfo OZONE_VERSION_INFO = - new OzoneVersionInfo("ozone"); + private OzoneVersionInfo() {} public static void main(String[] args) { System.out.println( diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManager.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManager.java index c79da17..1e2524d 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManager.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManager.java @@ -62,6 +62,7 @@ import org.apache.hadoop.ozone.protocol.commands.SCMCommand; import org.apache.hadoop.security.authentication.client.AuthenticationException; import org.apache.hadoop.test.GenericTestUtils; import org.apache.hadoop.util.ExitUtil; +import org.apache.hadoop.utils.HddsVersionInfo; import org.junit.Assert; import org.junit.Rule; @@ -474,5 +475,10 @@ public class TestStorageContainerManager { ScmInfo scmInfo = scm.getClientProtocolServer().getScmInfo(); Assert.assertEquals(clusterId, scmInfo.getClusterId()); Assert.assertEquals(scmId, scmInfo.getScmId()); + + String expectedVersion = HddsVersionInfo.HDDS_VERSION_INFO.getVersion(); + String actualVersion = scm.getSoftwareVersion(); + Assert.assertEquals(expectedVersion, actualVersion); } + } diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManager.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManager.java index 26c2a58..45231f1 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManager.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManager.java @@ -38,6 +38,7 @@ import org.apache.hadoop.ozone.protocol.proto .OzoneManagerProtocolProtos.ServicePort; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.VolumeList; +import org.apache.hadoop.ozone.util.OzoneVersionInfo; import org.apache.hadoop.ozone.web.handlers.BucketArgs; import org.apache.hadoop.ozone.web.handlers.KeyArgs; import org.apache.hadoop.ozone.web.handlers.UserArgs; @@ -1395,4 +1396,11 @@ public class TestOzoneManager { LifeCycle.State.RUNNING, cluster.getOzoneManager().getOmRatisServerState()); } + + @Test + public void testVersion() { + String expectedVersion = OzoneVersionInfo.OZONE_VERSION_INFO.getVersion(); + String actualVersion = cluster.getOzoneManager().getSoftwareVersion(); + Assert.assertEquals(expectedVersion, actualVersion); + } } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java index a921a03..9c15e31 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java @@ -99,6 +99,7 @@ import org.apache.hadoop.ozone.security.acl.OzoneObjInfo; import org.apache.hadoop.ozone.security.acl.RequestContext; import org.apache.hadoop.ozone.security.OzoneBlockTokenSecretManager; import org.apache.hadoop.ozone.security.OzoneDelegationTokenSecretManager; +import org.apache.hadoop.ozone.util.OzoneVersionInfo; import org.apache.hadoop.security.AccessControlException; import org.apache.hadoop.security.SecurityUtil; import org.apache.hadoop.security.UserGroupInformation; @@ -223,6 +224,7 @@ public final class OzoneManager extends ServiceRuntimeInfoImpl private volatile boolean isOmRpcServerRunning = false; private OzoneManager(OzoneConfiguration conf) throws IOException { + super(OzoneVersionInfo.OZONE_VERSION_INFO); Preconditions.checkNotNull(conf); configuration = conf; omStorage = new OMStorage(conf); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
