This is an automated email from the ASF dual-hosted git repository.
dineshc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 3ab76ce HDDS-2371. Print Ozone version during startup instead of
Hadoop version (#869)
3ab76ce is described below
commit 3ab76ce59d529aa4f468a72eb7aec187cb01a0bd
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Tue Jun 2 05:38:15 2020 +0200
HDDS-2371. Print Ozone version during startup instead of Hadoop version
(#869)
---
.../java/org/apache/hadoop/hdds/StringUtils.java | 77 +++++++++++++++++-
.../org/apache/hadoop/hdds/utils/SignalLogger.java | 93 ++++++++++++++++++++++
.../apache/hadoop/ozone/HddsDatanodeService.java | 9 ++-
.../scm/server/StorageContainerManagerStarter.java | 7 +-
.../org/apache/hadoop/ozone/csi/CsiServer.java | 7 +-
.../hadoop/ozone/om/OzoneManagerStarter.java | 9 ++-
.../org/apache/hadoop/ozone/recon/ReconServer.java | 7 ++
.../java/org/apache/hadoop/ozone/s3/Gateway.java | 7 ++
8 files changed, 201 insertions(+), 15 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/StringUtils.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/StringUtils.java
index a696a0b..d5d847a 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/StringUtils.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/StringUtils.java
@@ -1,4 +1,4 @@
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -19,6 +19,15 @@ package org.apache.hadoop.hdds;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.hadoop.hdds.utils.SignalLogger;
+import org.apache.hadoop.hdds.utils.VersionInfo;
+import org.apache.hadoop.net.NetUtils;
+import org.apache.hadoop.util.ShutdownHookManager;
+import org.slf4j.Logger;
/**
* Simple utility class to collection string conversion methods.
@@ -33,6 +42,11 @@ public final class StringUtils {
private static final String UTF8_CSN = StandardCharsets.UTF_8.name();
/**
+ * Priority of the StringUtils shutdown hook.
+ */
+ private static final int SHUTDOWN_HOOK_PRIORITY = 0;
+
+ /**
* Decode a specific range of bytes of the given byte array to a string
* using UTF8.
*
@@ -73,4 +87,65 @@ public final class StringUtils {
}
}
+ /**
+ * Return a message for logging.
+ * @param prefix prefix keyword for the message
+ * @param msg content of the message
+ * @return a message for logging
+ */
+ public static String toStartupShutdownString(String prefix, String... msg) {
+ StringBuilder b = new StringBuilder(prefix);
+
b.append("\n/************************************************************");
+ for (String s : msg) {
+ b.append("\n").append(prefix).append(s);
+ }
+
b.append("\n************************************************************/");
+ return b.toString();
+ }
+
+ public static void startupShutdownMessage(VersionInfo versionInfo,
+ Class<?> clazz, String[] args, Logger log) {
+ final String hostname = NetUtils.getHostname();
+ final String className = clazz.getSimpleName();
+ if (log.isInfoEnabled()) {
+ log.info(createStartupShutdownMessage(versionInfo, className, hostname,
+ args));
+ }
+
+ if (SystemUtils.IS_OS_UNIX) {
+ try {
+ SignalLogger.INSTANCE.register(log);
+ } catch (Throwable t) {
+ log.warn("failed to register any UNIX signal loggers: ", t);
+ }
+ }
+ ShutdownHookManager.get().addShutdownHook(
+ () -> log.info(toStartupShutdownString("SHUTDOWN_MSG: ",
+ "Shutting down " + className + " at " + hostname)),
+ SHUTDOWN_HOOK_PRIORITY);
+
+ }
+
+ /**
+ * Generate the text for the startup/shutdown message of processes.
+ * @param className short name of the class
+ * @param hostname hostname
+ * @param args Command arguments
+ * @return a string to log.
+ */
+ public static String createStartupShutdownMessage(VersionInfo versionInfo,
+ String className, String hostname, String[] args) {
+ return toStartupShutdownString("STARTUP_MSG: ",
+ "Starting " + className,
+ " host = " + hostname,
+ " args = " + (args != null ? Arrays.asList(args) : new ArrayList<>()),
+ " version = " + versionInfo.getVersion(),
+ " classpath = " + System.getProperty("java.class.path"),
+ " build = " + versionInfo.getUrl() + "/"
+ + versionInfo.getRevision()
+ + " ; compiled by '" + versionInfo.getUser()
+ + "' on " + versionInfo.getDate(),
+ " java = " + System.getProperty("java.version"));
+ }
+
}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/utils/SignalLogger.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/utils/SignalLogger.java
new file mode 100644
index 0000000..5782f80
--- /dev/null
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/utils/SignalLogger.java
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hdds.utils;
+
+import org.apache.hadoop.hdds.annotation.InterfaceAudience;
+import org.apache.hadoop.hdds.annotation.InterfaceStability;
+import org.slf4j.Logger;
+
+/**
+ * This class logs a message whenever we're about to exit on a UNIX signal.
+ * This is helpful for determining the root cause of a process' exit.
+ * For example, if the process exited because the system administrator
+ * ran a standard "kill," you would see 'EXITING ON SIGNAL SIGTERM' in the log.
+ */
[email protected]
[email protected]
+public enum SignalLogger {
+
+ INSTANCE;
+
+ private static final String[] SIGNALS = new String[] {"TERM", "HUP", "INT"};
+
+ private boolean registered = false;
+
+ /**
+ * Our signal handler.
+ */
+ private static class Handler implements sun.misc.SignalHandler {
+ private final Logger log;
+ private final sun.misc.SignalHandler prevHandler;
+
+ Handler(String name, Logger log) {
+ this.log = log;
+ prevHandler = sun.misc.Signal.handle(new sun.misc.Signal(name), this);
+ }
+
+ /**
+ * Handle an incoming signal.
+ *
+ * @param signal The incoming signal
+ */
+ @Override
+ public void handle(sun.misc.Signal signal) {
+ log.error("RECEIVED SIGNAL {}: SIG{}",
+ signal.getNumber(), signal.getName());
+ prevHandler.handle(signal);
+ }
+ }
+
+ /**
+ * Register some signal handlers.
+ *
+ * @param log The logger to use in the signal handlers.
+ */
+ public void register(final Logger log) {
+ if (registered) {
+ throw new IllegalStateException("Can't re-install the signal handlers.");
+ }
+ registered = true;
+ StringBuilder bld = new StringBuilder();
+ bld.append("registered UNIX signal handlers for [");
+ String separator = "";
+ for (String signalName : SIGNALS) {
+ try {
+ new Handler(signalName, log);
+ bld.append(separator).append(signalName);
+ separator = ", ";
+ } catch (Exception e) {
+ log.debug("", e);
+ }
+ }
+ bld.append("]");
+ if (log.isInfoEnabled()) {
+ log.info(bld.toString());
+ }
+ }
+}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java
index e811a88..80c056e 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java
@@ -1,4 +1,4 @@
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -31,6 +31,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.hdds.DFSConfigKeysLegacy;
import org.apache.hadoop.hdds.HddsUtils;
+import org.apache.hadoop.hdds.StringUtils;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.conf.ConfigurationSource;
@@ -46,6 +47,7 @@ import
org.apache.hadoop.hdds.security.x509.certificate.client.DNCertificateClie
import
org.apache.hadoop.hdds.security.x509.certificates.utils.CertificateSignRequest;
import org.apache.hadoop.hdds.server.http.RatisDropwizardExports;
import org.apache.hadoop.hdds.tracing.TracingUtil;
+import org.apache.hadoop.hdds.utils.HddsVersionInfo;
import org.apache.hadoop.ozone.container.common.helpers.ContainerUtils;
import
org.apache.hadoop.ozone.container.common.statemachine.DatanodeStateMachine;
import org.apache.hadoop.ozone.container.common.utils.HddsVolumeUtil;
@@ -55,7 +57,6 @@ import org.apache.hadoop.security.SecurityUtil;
import org.apache.hadoop.security.UserGroupInformation;
import
org.apache.hadoop.security.authentication.client.AuthenticationException;
import org.apache.hadoop.util.ServicePlugin;
-import org.apache.hadoop.util.StringUtils;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
@@ -148,8 +149,8 @@ public class HddsDatanodeService extends GenericCli
implements ServicePlugin {
@Override
public Void call() throws Exception {
if (printBanner) {
- StringUtils
- .startupShutdownMessage(HddsDatanodeService.class, args, LOG);
+ StringUtils.startupShutdownMessage(HddsVersionInfo.HDDS_VERSION_INFO,
+ HddsDatanodeService.class, args, LOG);
}
start(createOzoneConfiguration());
join();
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManagerStarter.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManagerStarter.java
index a1f6a40..afa3732 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManagerStarter.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManagerStarter.java
@@ -21,12 +21,13 @@
*/
package org.apache.hadoop.hdds.scm.server;
+import org.apache.hadoop.hdds.StringUtils;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.tracing.TracingUtil;
+import org.apache.hadoop.hdds.utils.HddsVersionInfo;
import org.apache.hadoop.ozone.common.StorageInfo;
-import org.apache.hadoop.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import picocli.CommandLine;
@@ -128,8 +129,8 @@ public class StorageContainerManagerStarter extends
GenericCli {
String[] originalArgs = getCmd().getParseResult().originalArgs()
.toArray(new String[0]);
- StringUtils.startupShutdownMessage(StorageContainerManager.class,
- originalArgs, LOG);
+ StringUtils.startupShutdownMessage(HddsVersionInfo.HDDS_VERSION_INFO,
+ StorageContainerManager.class, originalArgs, LOG);
}
/**
diff --git
a/hadoop-ozone/csi/src/main/java/org/apache/hadoop/ozone/csi/CsiServer.java
b/hadoop-ozone/csi/src/main/java/org/apache/hadoop/ozone/csi/CsiServer.java
index 3cd012e..88ab8d3 100644
--- a/hadoop-ozone/csi/src/main/java/org/apache/hadoop/ozone/csi/CsiServer.java
+++ b/hadoop-ozone/csi/src/main/java/org/apache/hadoop/ozone/csi/CsiServer.java
@@ -19,6 +19,7 @@ package org.apache.hadoop.ozone.csi;
import java.util.concurrent.Callable;
+import org.apache.hadoop.hdds.StringUtils;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.conf.Config;
@@ -27,7 +28,7 @@ import org.apache.hadoop.hdds.conf.ConfigTag;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.ozone.client.OzoneClient;
import org.apache.hadoop.ozone.client.OzoneClientFactory;
-import org.apache.hadoop.util.StringUtils;
+import org.apache.hadoop.ozone.util.OzoneVersionInfo;
import io.grpc.Server;
import io.grpc.netty.NettyServerBuilder;
@@ -84,8 +85,8 @@ public class CsiServer extends GenericCli implements
Callable<Void> {
}
public static void main(String[] args) {
-
- StringUtils.startupShutdownMessage(CsiServer.class, args, LOG);
+ StringUtils.startupShutdownMessage(OzoneVersionInfo.OZONE_VERSION_INFO,
+ CsiServer.class, args, LOG);
new CsiServer().run(args);
}
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManagerStarter.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManagerStarter.java
index e553c43..6dc4aea 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManagerStarter.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManagerStarter.java
@@ -1,4 +1,4 @@
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with this
* work for additional information regarding copyright ownership. The ASF
@@ -17,12 +17,13 @@
package org.apache.hadoop.ozone.om;
+import org.apache.hadoop.hdds.StringUtils;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.tracing.TracingUtil;
+import org.apache.hadoop.ozone.util.OzoneVersionInfo;
import
org.apache.hadoop.security.authentication.client.AuthenticationException;
-import org.apache.hadoop.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import picocli.CommandLine;
@@ -107,8 +108,8 @@ public class OzoneManagerStarter extends GenericCli {
String[] originalArgs = getCmd().getParseResult().originalArgs()
.toArray(new String[0]);
- StringUtils.startupShutdownMessage(OzoneManager.class,
- originalArgs, LOG);
+ StringUtils.startupShutdownMessage(OzoneVersionInfo.OZONE_VERSION_INFO,
+ OzoneManager.class, originalArgs, LOG);
}
/**
diff --git
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconServer.java
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconServer.java
index ee4d5a6..c2b1c5f 100644
---
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconServer.java
+++
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/ReconServer.java
@@ -22,6 +22,7 @@ import static
org.apache.hadoop.hdds.recon.ReconConfig.ConfigStrings.OZONE_RECON
import static
org.apache.hadoop.hdds.recon.ReconConfig.ConfigStrings.OZONE_RECON_KERBEROS_PRINCIPAL_KEY;
import org.apache.hadoop.hdds.HddsUtils;
+import org.apache.hadoop.hdds.StringUtils;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.recon.ReconConfig;
@@ -31,6 +32,7 @@ import org.apache.hadoop.ozone.OzoneSecurityUtil;
import org.apache.hadoop.ozone.recon.spi.ContainerDBServiceProvider;
import org.apache.hadoop.ozone.recon.spi.OzoneManagerServiceProvider;
import org.apache.hadoop.ozone.recon.spi.StorageContainerServiceProvider;
+import org.apache.hadoop.ozone.util.OzoneVersionInfo;
import org.apache.hadoop.security.SecurityUtil;
import org.apache.hadoop.security.UserGroupInformation;
import
org.apache.hadoop.security.authentication.client.AuthenticationException;
@@ -67,6 +69,11 @@ public class ReconServer extends GenericCli {
@Override
public Void call() throws Exception {
+ String[] originalArgs = getCmd().getParseResult().originalArgs()
+ .toArray(new String[0]);
+ StringUtils.startupShutdownMessage(OzoneVersionInfo.OZONE_VERSION_INFO,
+ ReconServer.class, originalArgs, LOG);
+
configuration = createOzoneConfiguration();
ConfigurationProvider.setConfiguration(configuration);
diff --git
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/Gateway.java
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/Gateway.java
index 05208bc..459a7a4 100644
---
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/Gateway.java
+++
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/Gateway.java
@@ -19,10 +19,12 @@ package org.apache.hadoop.ozone.s3;
import java.io.IOException;
+import org.apache.hadoop.hdds.StringUtils;
import org.apache.hadoop.hdds.cli.GenericCli;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.tracing.TracingUtil;
+import org.apache.hadoop.ozone.util.OzoneVersionInfo;
import org.apache.hadoop.security.UserGroupInformation;
import org.slf4j.Logger;
@@ -58,6 +60,11 @@ public class Gateway extends GenericCli {
}
public void start() throws IOException {
+ String[] originalArgs = getCmd().getParseResult().originalArgs()
+ .toArray(new String[0]);
+ StringUtils.startupShutdownMessage(OzoneVersionInfo.OZONE_VERSION_INFO,
+ Gateway.class, originalArgs, LOG);
+
LOG.info("Starting Ozone S3 gateway");
httpServer.start();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]