prestodb / presto

The official home of the Presto distributed SQL query engine for big data
http://prestodb.io
Apache License 2.0
15.93k stars 5.33k forks source link

Exception on CLI #3654

Closed nileema closed 8 years ago

nileema commented 9 years ago
presto> show tables from raptor.system;
 Table
--------
 shards
(1 row)

Query 20150922_190632_00002_88uiv, FINISHED, 1 node
http://localhost:8080/v1/query/20150922_190632_00002_88uiv?pretty
Splits: 2 total, 2 done (100.00%)
CPU Time: 0.0s total,   111 rows/s, 3.25KB/s, 81% active
Per Node: 0.1 parallelism,     7 rows/s,   223B/s
Parallelism: 0.1
0:00 [1 rows, 30B] [7 rows/s, 223B/s]

presto> [ERROR] Failed to disable interrupt character
java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at java.lang.UNIXProcess.waitFor(UNIXProcess.java:396)
    at jline.internal.TerminalLineSettings.waitAndCapture(TerminalLineSettings.java:339)
    at jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:311)
    at jline.internal.TerminalLineSettings.stty(TerminalLineSettings.java:282)
    at jline.internal.TerminalLineSettings.undef(TerminalLineSettings.java:158)
    at jline.UnixTerminal.disableInterruptCharacter(UnixTerminal.java:153)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2445)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2372)
    at com.facebook.presto.cli.LineReader.readLine(LineReader.java:51)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2360)
    at com.facebook.presto.cli.Console.runConsole(Console.java:149)
    at com.facebook.presto.cli.Console.run(Console.java:128)
    at com.facebook.presto.cli.Presto.main(Presto.java:32)

[ERROR] Failed to disable litteral next character
java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at java.lang.UNIXProcess.waitFor(UNIXProcess.java:396)
    at jline.internal.TerminalLineSettings.waitAndCapture(TerminalLineSettings.java:339)
    at jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:311)
    at jline.internal.TerminalLineSettings.stty(TerminalLineSettings.java:282)
    at jline.internal.TerminalLineSettings.undef(TerminalLineSettings.java:158)
    at jline.UnixTerminal.disableLitteralNextCharacter(UnixTerminal.java:185)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2448)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2372)
    at com.facebook.presto.cli.LineReader.readLine(LineReader.java:51)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2360)
    at com.facebook.presto.cli.Console.runConsole(Console.java:149)
    at com.facebook.presto.cli.Console.run(Console.java:128)
    at com.facebook.presto.cli.Presto.main(Presto.java:32)
kerti commented 8 years ago

Happens to me also. Seems to be happening under the following conditions:

  1. The query has some results, and I immediately press Q to exit the viewer.
  2. I define the JSON schema for the tables I am querying, adding just the kafka_key field as described here: https://prestodb.io/docs/current/connector/kafka-tutorial.html
avolochenko commented 8 years ago

same problem, here is a basic query against a sample table:

presto-cli --catalog hive
presto> use default;
presto:default> show tables;
   Table   
-----------
 sample_07 
 sample_08 
(2 rows)

Query 20151011_043327_00012_vs6yp, FINISHED, 2 nodes
Splits: 2 total, 2 done (100.00%)
0:00 [2 rows, 60B] [22 rows/s, 674B/s]

presto:default> select count(*) from sample_07;
 _col0 
-------
   823 
(1 row)

Query 20151011_043336_00013_vs6yp, FINISHED, 1 node
Splits: 2 total, 2 done (100.00%)
0:00 [823 rows, 45KB] [3.95K rows/s, 216KB/s]

presto:default> [ERROR] Failed to disable interrupt character
java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at java.lang.UNIXProcess.waitFor(UNIXProcess.java:396)
    at jline.internal.TerminalLineSettings.waitAndCapture(TerminalLineSettings.java:339)
    at jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:311)
    at jline.internal.TerminalLineSettings.stty(TerminalLineSettings.java:282)
    at jline.internal.TerminalLineSettings.undef(TerminalLineSettings.java:158)
    at jline.UnixTerminal.disableInterruptCharacter(UnixTerminal.java:153)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2445)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2372)
    at com.facebook.presto.cli.LineReader.readLine(LineReader.java:51)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2360)
    at com.facebook.presto.cli.Console.runConsole(Console.java:149)
    at com.facebook.presto.cli.Console.run(Console.java:128)
    at com.facebook.presto.cli.Presto.main(Presto.java:32)

[ERROR] Failed to disable litteral next character
java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at java.lang.UNIXProcess.waitFor(UNIXProcess.java:396)
    at jline.internal.TerminalLineSettings.waitAndCapture(TerminalLineSettings.java:339)
    at jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:311)
    at jline.internal.TerminalLineSettings.stty(TerminalLineSettings.java:282)
    at jline.internal.TerminalLineSettings.undef(TerminalLineSettings.java:158)
    at jline.UnixTerminal.disableLitteralNextCharacter(UnixTerminal.java:185)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2448)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2372)
    at com.facebook.presto.cli.LineReader.readLine(LineReader.java:51)
    at jline.console.ConsoleReader.readLine(ConsoleReader.java:2360)
    at com.facebook.presto.cli.Console.runConsole(Console.java:149)
    at com.facebook.presto.cli.Console.run(Console.java:128)
    at com.facebook.presto.cli.Presto.main(Presto.java:32)]
nsabharwal commented 8 years ago

Facing the same issue

presto> select * from default.presto_hive_test;

note

Presto is accessing Hive table. Thanks FB for creating this (1 row)

Query 20151018_211002_00023_uvnc3, FINISHED, 1 node Splits: 2 total, 2 done (100.00%) 0:00 [1 rows, 61B] [8 rows/s, 535B/s]

presto> select * from default.presto_hive_test;

note

Presto is accessing Hive table. Thanks FB for creating this (1 row)

Query 20151018_211003_00024_uvnc3, FINISHED, 1 node Splits: 2 total, 2 done (100.00%) 0:00 [1 rows, 61B] [11 rows/s, 676B/s]

presto> select * from default.presto_hive_test;

note

Presto is accessing Hive table. Thanks FB for creating this (1 row)

Query 20151018_211004_00025_uvnc3, FINISHED, 1 node Splits: 2 total, 2 done (100.00%) 0:00 [1 rows, 61B] [7 rows/s, 485B/s]

presto> select * from default.presto_hive_test;

note

Presto is accessing Hive table. Thanks FB for creating this (1 row)

Query 20151018_211005_00026_uvnc3, FINISHED, 1 node Splits: 2 total, 2 done (100.00%) 0:00 [1 rows, 61B] [8 rows/s, 514B/s]

presto> [ERROR] Failed to disable interrupt character java.lang.InterruptedException at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at java.lang.UNIXProcess.waitFor(UNIXProcess.java:396) at jline.internal.TerminalLineSettings.waitAndCapture(TerminalLineSettings.java:339) at jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:311) at jline.internal.TerminalLineSettings.stty(TerminalLineSettings.java:282) at jline.internal.TerminalLineSettings.undef(TerminalLineSettings.java:158) at jline.UnixTerminal.disableInterruptCharacter(UnixTerminal.java:153) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2445) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2372) at com.facebook.presto.cli.LineReader.readLine(LineReader.java:51) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2360) at com.facebook.presto.cli.Console.runConsole(Console.java:149) at com.facebook.presto.cli.Console.run(Console.java:128) at com.facebook.presto.cli.Presto.main(Presto.java:32)

[ERROR] Failed to disable litteral next character java.lang.InterruptedException at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at java.lang.UNIXProcess.waitFor(UNIXProcess.java:396) at jline.internal.TerminalLineSettings.waitAndCapture(TerminalLineSettings.java:339) at jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:311) at jline.internal.TerminalLineSettings.stty(TerminalLineSettings.java:282) at jline.internal.TerminalLineSettings.undef(TerminalLineSettings.java:158) at jline.UnixTerminal.disableLitteralNextCharacter(UnixTerminal.java:185) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2448) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2372) at com.facebook.presto.cli.LineReader.readLine(LineReader.java:51) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2360) at com.facebook.presto.cli.Console.runConsole(Console.java:149) at com.facebook.presto.cli.Console.run(Console.java:128) at com.facebook.presto.cli.Presto.main(Presto.java:32)

select * from default.presto_hive_test; Error running command: java.lang.InterruptedException presto> [ERROR] Failed to disable interrupt character java.lang.InterruptedException at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at java.lang.UNIXProcess.waitFor(UNIXProcess.java:396) at jline.internal.TerminalLineSettings.waitAndCapture(TerminalLineSettings.java:339) at jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:311) at jline.internal.TerminalLineSettings.stty(TerminalLineSettings.java:282) at jline.internal.TerminalLineSettings.undef(TerminalLineSettings.java:158) at jline.UnixTerminal.disableInterruptCharacter(UnixTerminal.java:153) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2445) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2372) at com.facebook.presto.cli.LineReader.readLine(LineReader.java:51) at jline.console.ConsoleReader.readLine(ConsoleReader.java:2360) at com.facebook.presto.cli.Console.runConsole(Console.java:149) at com.facebook.presto.cli.Console.run(Console.java:128) at com.facebook.presto.cli.Presto.main(Presto.java:32)

drnushooz commented 8 years ago

Looking through the presto-cli code, LineReader which is extended from jline's ConsoleReader has an api call to setHandleUserInterrupt(true);. I set that one to false so that jvm performs its default action and added setHandleLitteralNext(false). So far the exceptions haven't come up. I am curious about why presto cli needs to be able to handle literals next.

djhworld commented 8 years ago

This happens to me also when using presto-cli via SSH onto an AWS EMR master node.

I've noticed it happens when you press the up arrow key to retrieve a previously used query or command, then hitting the enter key.

arnaudbaali commented 8 years ago

:+1: with mysql query as well

kokosing commented 8 years ago

I am going to fix this.

FYI @haozhun This is related to https://github.com/facebook/presto/commit/a243254462954b207fc85fd0940137e7e12e46a3

clientThread (in this case main) is interrupted when it is setting some stty properties.

kokosing commented 8 years ago

Here is a fix: https://github.com/facebook/presto/pull/4222