ksql icon indicating copy to clipboard operation
ksql copied to clipboard

ksqlDB CLI crashed - java.io.IOError: java.io.IOException: Error executing 'stty -icrnl -ixon -echo -icanon -iexten min 0 time 1':

Open rmoff opened this issue 3 years ago • 4 comments

Pressing Ctrl-C (perhaps a bit too enthusiastically) in ksqlDB CLI with v0.12 on Docker resulted in it crashing out

Exception in thread "main" java.io.IOError: java.io.IOException: Error executing 'stty -icrnl -ixon
-echo -icanon -iexten min 0 time 1': 
       at org.jline.terminal.impl.AbstractPosixTerminal.setAttributes(AbstractPosixTerminal.java:54
  FROM at org.jline.terminal.impl.AbstractTerminal.enterRawMode(AbstractTerminal.java:123)
  EMIT at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:602)
^C      at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:455)
^C      at io.confluent.ksql.cli.console.JLineReader.readLine(JLineReader.java:70)
        at io.confluent.ksql.cli.console.JLineTerminal.readLine(JLineTerminal.java:107)
        at io.confluent.ksql.cli.console.Console.readLine(Console.java:312)
        at io.confluent.ksql.cli.Cli.readLine(Cli.java:268)
        at io.confluent.ksql.cli.Cli.runInteractively(Cli.java:188)
        at io.confluent.ksql.Ksql.run(Ksql.java:115)
        at io.confluent.ksql.Ksql.main(Ksql.java:74)
Caused by: java.io.IOException: Error executing 'stty -icrnl -ixon -echo -icanon -iexten min 0 time
1':
        at org.jline.utils.ExecHelper.exec(ExecHelper.java:42)
        at org.jline.terminal.impl.ExecPty.doSetAttr(ExecPty.java:101)
        at org.jline.terminal.impl.AbstractPty.setAttr(AbstractPty.java:29)
        at org.jline.terminal.impl.AbstractPosixTerminal.setAttributes(AbstractPosixTerminal.java:52
)
        ... 10 more

This wouldn't matter so much except it was on a live demo being streamed to conference attendees :)

rmoff avatar Nov 06 '20 13:11 rmoff

This can be reproduced with a ksqlDB cli locally outside of docker. Just spam ctrl+c a lot. There's a variety of errors that occur such as

Exception in thread "main" java.io.IOError: java.io.IOException: Error executing 'stty -a': 
        at org.jline.terminal.impl.AbstractPosixTerminal.getAttributes(AbstractPosixTerminal.java:46)
        at org.jline.terminal.impl.AbstractTerminal.enterRawMode(AbstractTerminal.java:117)
        at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:602)
        at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:455)
        at io.confluent.ksql.cli.console.JLineReader.readLine(JLineReader.java:70)
        at io.confluent.ksql.cli.console.JLineTerminal.readLine(JLineTerminal.java:107)
        at io.confluent.ksql.cli.console.Console.nextNonCliCommand(Console.java:316)
        at io.confluent.ksql.cli.Cli.nextNonCliCommand(Cli.java:340)
        at io.confluent.ksql.cli.Cli.runInteractively(Cli.java:259)
        at io.confluent.ksql.Ksql.run(Ksql.java:126)
        at io.confluent.ksql.Ksql.main(Ksql.java:75)
Caused by: java.io.IOException: Error executing 'stty -a': 
        at org.jline.utils.ExecHelper.exec(ExecHelper.java:42)
        at org.jline.terminal.impl.ExecPty.doGetConfig(ExecPty.java:175)
        at org.jline.terminal.impl.ExecPty.getAttr(ExecPty.java:87)
        at org.jline.terminal.impl.AbstractPosixTerminal.getAttributes(AbstractPosixTerminal.java:44)
        ... 10 more
Exception in thread "main" java.io.IOError: java.io.InterruptedIOException: Command interrupted
        at org.jline.terminal.impl.AbstractPosixTerminal.setAttributes(AbstractPosixTerminal.java:54)
        at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:716)
        at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:455)
        at io.confluent.ksql.cli.console.JLineReader.readLine(JLineReader.java:70)
        at io.confluent.ksql.cli.console.JLineTerminal.readLine(JLineTerminal.java:107)
        at io.confluent.ksql.cli.console.Console.nextNonCliCommand(Console.java:316)
        at io.confluent.ksql.cli.Cli.nextNonCliCommand(Cli.java:340)
        at io.confluent.ksql.cli.Cli.runInteractively(Cli.java:259)
        at io.confluent.ksql.Ksql.run(Ksql.java:126)
        at io.confluent.ksql.Ksql.main(Ksql.java:75)
Caused by: java.io.InterruptedIOException: Command interrupted
        at org.jline.utils.ExecHelper.exec(ExecHelper.java:46)
        at org.jline.terminal.impl.ExecPty.doGetConfig(ExecPty.java:175)
        at org.jline.terminal.impl.ExecPty.getAttr(ExecPty.java:87)
        at org.jline.terminal.impl.ExecPty.doSetAttr(ExecPty.java:93)
        at org.jline.terminal.impl.AbstractPty.setAttr(AbstractPty.java:29)
        at org.jline.terminal.impl.AbstractPosixTerminal.setAttributes(AbstractPosixTerminal.java:52)
        ... 9 more
Caused by: 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:395)
        at org.jline.utils.ExecHelper.waitAndCapture(ExecHelper.java:66)
        at org.jline.utils.ExecHelper.exec(ExecHelper.java:36)
        ... 14 more

stevenpyzhang avatar Nov 09 '20 01:11 stevenpyzhang

Synced with Robin—let's tackle this one. Is this fix-it-weekable, or is it a larger piece of work?

MichaelDrogalis avatar Nov 11 '20 00:11 MichaelDrogalis

I just looked at this a bit more. If I launch the CLI (0.13) and once it's started, hold Ctrl-C, I get the error.


                  ===========================================
                  =       _              _ ____  ____       =
                  =      | | _____  __ _| |  _ \| __ )      =
                  =      | |/ / __|/ _` | | | | |  _ \      =
                  =      |   <\__ \ (_| | | |_| | |_) |     =
                  =      |_|\_\___/\__, |_|____/|____/      =
                  =                   |_|                   =
                  =  Event Streaming Database purpose-built =
                  =        for stream processing apps       =
                  ===========================================

Copyright 2017-2020 Confluent Inc.

CLI v0.13.0, Server v0.13.0 located at http://ksqldb:8088
Server Status: RUNNING

Having trouble? Type 'help' (case-insensitive) for a rundown of how things work!

ksql>
^C
ksql>
^C
ksql>
^C
ksql>
Exception in thread "main" java.io.IOError: java.io.IOException: Error executing 'stty -a':
        at org.jline.terminal.impl.AbstractPosixTerminal.getAttributes(AbstractPosixTerminal.java:46)
        at org.jline.terminal.impl.AbstractTerminal.enterRawMode(AbstractTerminal.java:117)
        at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:602)
        at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:455)
        at io.confluent.ksql.cli.console.JLineReader.readLine(JLineReader.java:70)
        at io.confluent.ksql.cli.console.JLineTerminal.readLine(JLineTerminal.java:107)
        at io.confluent.ksql.cli.console.Console.readLine(Console.java:313)
        at io.confluent.ksql.cli.Cli.readLine(Cli.java:268)
        at io.confluent.ksql.cli.Cli.runInteractively(Cli.java:188)
        at io.confluent.ksql.Ksql.run(Ksql.java:115)
        at io.confluent.ksql.Ksql.main(Ksql.java:74)
Caused by: java.io.IOException: Error executing 'stty -a':
        at org.jline.utils.ExecHelper.exec(ExecHelper.java:42)
        at org.jline.terminal.impl.ExecPty.doGetConfig(ExecPty.java:175)
        at org.jline.terminal.impl.ExecPty.getAttr(ExecPty.java:87)
        at org.jline.terminal.impl.AbstractPosixTerminal.getAttributes(AbstractPosixTerminal.java:44)
        ... 10 more

rmoff avatar Nov 11 '20 10:11 rmoff

HI! I experienced something similar in (unfortunately) our production environment. Would just like to check if spamming the Ctl+C in the ksqldb CLI will unintentionally affect(disrupt/ fail) any existing pull/push queries on KSQLDB directly?

Context: i have some microservices that will insert into some streams but noticed that they started failing sometime after I accidentally did Ctl+C one time too many. Just trying to understand what the impact is for this action :)

image

Exception in thread "main" java.io.IOError: java.io.InterruptedIOException: Command interrupted
	at org.jline.terminal.impl.AbstractPosixTerminal.setAttributes(AbstractPosixTerminal.java:54)
	at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:716)
	at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:455)
	at io.confluent.ksql.cli.console.JLineReader.readLine(JLineReader.java:70)
	at io.confluent.ksql.cli.console.JLineTerminal.readLine(JLineTerminal.java:107)
	at io.confluent.ksql.cli.console.Console.nextNonCliCommand(Console.java:326)
	at io.confluent.ksql.cli.Cli.nextNonCliCommand(Cli.java:389)
	at io.confluent.ksql.cli.Cli.runInteractively(Cli.java:269)
	at io.confluent.ksql.Ksql.run(Ksql.java:126)
	at io.confluent.ksql.Ksql.main(Ksql.java:73)
Caused by: java.io.InterruptedIOException: Command interrupted
	at org.jline.utils.ExecHelper.exec(ExecHelper.java:46)
	at org.jline.terminal.impl.ExecPty.doGetConfig(ExecPty.java:175)
	at org.jline.terminal.impl.ExecPty.getAttr(ExecPty.java:87)
	at org.jline.terminal.impl.ExecPty.doSetAttr(ExecPty.java:93)
	at org.jline.terminal.impl.AbstractPty.setAttr(AbstractPty.java:29)
	at org.jline.terminal.impl.AbstractPosixTerminal.setAttributes(AbstractPosixTerminal.java:52)
	... 9 more
Caused by: 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:395)
	at org.jline.utils.ExecHelper.waitAndCapture(ExecHelper.java:66)
	at org.jline.utils.ExecHelper.exec(ExecHelper.java:36)
	... 14 more

Syab avatar Jun 30 '22 18:06 Syab