Naveen Gangam created HIVE-19700: ------------------------------------ Summary: Workaround for JLine issue with UnsupportedTerminal Key: HIVE-19700 URL: https://issues.apache.org/jira/browse/HIVE-19700 Project: Hive Issue Type: Bug Reporter: Naveen Gangam Assignee: Naveen Gangam Fix For: 2.2.1
>From the JLine's ConsoleReader, readLine(prompt, mask) calls the following >beforeReadLine() method. {code} try { // System.out.println("is terminal supported " + terminal.isSupported()); if (!terminal.isSupported()) { beforeReadLine(prompt, mask); } {code} So specifically when using UnsupportedTerminal {{-Djline.terminal}} and {{prompt=null}} and {{mask!=null}}, a "null" string gets printed to the console before and after the query result. {{UnsupportedTerminal}} is required to be used when running beeline as a background process, hangs otherwise. {code} private void beforeReadLine(final String prompt, final Character mask) { if (mask != null && maskThread == null) { final String fullPrompt = "\r" + prompt + " " + " " + " " + "\r" + prompt; maskThread = new Thread() { public void run() { while (!interrupted()) { try { Writer out = getOutput(); out.write(fullPrompt); {code} So the {{prompt}} is null and {{mask}} is NOT in atleast 2 scenarios in beeline. when beeline's silent=true, prompt is null * https://github.com/apache/hive/blob/master/beeline/src/java/org/apache/hive/beeline/BeeLine.java#L1264 when running multiline queries * https://github.com/apache/hive/blob/master/beeline/src/java/org/apache/hive/beeline/Commands.java#L1093 When executing beeline in script mode (commands in a file), there should not be any masking while reading lines from the script file. aka, entire line should be a beeline command or part of a multiline hive query. So it should be safe to use a null mask instead of {{ConsoleReader.NULL_MASK}} when using UnsupportedTerminal as jline terminal. -- This message was sent by Atlassian JIRA (v7.6.3#76005)