diff --git a/service/src/java/org/apache/hive/service/server/HiveServer2.java b/service/src/java/org/apache/hive/service/server/HiveServer2.java index 6184fdcc91..dd66b11dad 100644 --- a/service/src/java/org/apache/hive/service/server/HiveServer2.java +++ b/service/src/java/org/apache/hive/service/server/HiveServer2.java @@ -1141,6 +1141,7 @@ public static void main(String[] args) { String initLog4jMessage = LogUtils.initHiveLog4j(); LOG.debug(initLog4jMessage); HiveStringUtils.startupShutdownMessage(HiveServer2.class, args, LOG); + oproc.maybeLogFileSplit(); // Logger debug message from "oproc" after log4j initialize properly LOG.debug(oproc.getDebugMessage().toString()); @@ -1165,6 +1166,7 @@ public static void main(String[] args) { private org.apache.commons.cli.CommandLine commandLine; private final String serverName; private final StringBuilder debugMessage = new StringBuilder(); + private boolean logInArgument = false; @SuppressWarnings("static-access") ServerOptionsProcessor(String serverName) { @@ -1214,6 +1216,13 @@ ServerOptionsProcessorResponse parse(String[] argv) { } else { System.setProperty(propKey, confProps.getProperty(propKey)); } + if (propKey.equals("hive.root.logger") || propKey.equals("hive.log.file") || + propKey.equals("hive.log.file")) { + LOG.warn("Logs may be split in two files if the command line argument " + propKey + " is " + + "used. To prevent this add to HADOOP_CLIENT_OPTS -D" + propKey + "=" + + confProps.getProperty(propKey) + " (see HIVE-19886)"); + logInArgument = true; + } } // Process --help @@ -1248,6 +1257,14 @@ ServerOptionsProcessorResponse parse(String[] argv) { return new ServerOptionsProcessorResponse(new StartOptionExecutor()); } + void maybeLogFileSplit() { + Logger log = LoggerFactory.getLogger(ServerOptionsProcessor.class); + if (logInArgument) { + log.warn("Logs may be split in two files because they were set with command line arguments. " + + "It's recommended to set them with HADOOP_CLIENT_OPTS instead (see HIVE-19886)."); + } + } + StringBuilder getDebugMessage() { return debugMessage; }