[
https://issues.apache.org/jira/browse/HIVE-6758?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14174204#comment-14174204
]
Mohit Sabharwal commented on HIVE-6758:
---------------------------------------
I looked into it a bit, and here's my understanding:
In beeline, for pretty table formatting (which hive cli does not do), we get
the terminal width (and height) using
jline.Terminal.setupTerminal().getTerminalWidth(), which [sets terminal
properties|http://jline.sourcearchive.com/documentation/0.9.94-5/classjline_1_1UnixTerminal_da5160e7ec686c49b8f39e03d986cc2f.html#da5160e7ec686c49b8f39e03d986cc2f]
by calling stty.
However, when beeline is backgrounded, kernel's terminal driver sends a SIGTTOU
when stty is called, which if not caught, defaults to "stopping" the process. I
tried ignoring the signal in beeline:
{code}
Signal.handle(new Signal("TTOU"), SignalHandler.SIG_IGN);
{code}
This puts beeline process state back to "running", though it remains "hung" and
doesn't resume normal operation. I didn't see anything helpful using jstack.
Not sure what's happening here, will need some more digging.
However, since we don't care about pretty table formatting in background mode,
solution proposed by [~qwertymaniac] and [~brocknoland] also works fine.
Attached patch does that. It essentially sets the terminal type to
[UnsupportedTerminal|http://jline.sourcearchive.com/documentation/0.9.94-5/classjline_1_1UnsupportedTerminal.html]
(as opposed to UnixTerminal) which doesn't call stty.
Alternatively, instead of setting this system property, we could simply not
initialize a Terminal object if the process is backgrounded. Both approaches
result in default terminal height and width values. Am going with beeline
script-only approach.
Would appreciate comments from anyone more familiar with beeline/hive cli.
Thanks.
> Beeline doesn't work with -e option when started in background
> --------------------------------------------------------------
>
> Key: HIVE-6758
> URL: https://issues.apache.org/jira/browse/HIVE-6758
> Project: Hive
> Issue Type: Improvement
> Components: CLI
> Affects Versions: 0.11.0
> Reporter: Johndee Burks
> Assignee: Mohit Sabharwal
>
> In hive CLI you could easily integrate its use into a script and back ground
> the process like this:
> hive -e "some query" &
> Beeline does not run when you do the same even with the -f switch.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)