You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Naveen Gangam (JIRA)" <ji...@apache.org> on 2018/05/24 20:35:00 UTC
[jira] [Created] (HIVE-19700) Workaround for JLine issue with
UnsupportedTerminal
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)