Skip to content

Elasticsearch SQL CLI does not work while using TERM=linux #57076

@octavioranieri-zz

Description

@octavioranieri-zz

Elasticsearch version (bin/elasticsearch --version): 7.7

JVM version (java -version):
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.242-b08, mixed mode)

OS version (uname -a if on a Unix-like system):
It happens in all Linux based OS that echo $TERM equals to linux, reproduced in MacOS and CentOS.

Description of the problem including expected versus actual behavior:

Connection to SQL CLI fails when TERM is linux.

Steps to reproduce:

  1. Check if the system is using TERM linux:
    echo $TERM
    If not, change it to linux:
    export TERM=linux

  2. Try to connect (either using binary or jar):

$ java -cp elasticsearch-sql-cli-7.7.0.jar org.elasticsearch.xpack.sql.cli.Cli https://some.server:9200
Exception in thread "main" java.io.IOError: java.lang.UnsupportedOperationException
	at org.jline.utils.Curses.tputs(Curses.java:62)
	at org.jline.utils.Curses.tputs(Curses.java:45)
	at org.jline.keymap.KeyMap.key(KeyMap.java:243)
	at org.jline.reader.impl.LineReaderImpl.key(LineReaderImpl.java:5666)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
	at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
	at org.jline.reader.impl.LineReaderImpl.bindKeys(LineReaderImpl.java:5674)
	at org.jline.reader.impl.LineReaderImpl.emacs(LineReaderImpl.java:5387)
	at org.jline.reader.impl.LineReaderImpl.defaultKeyMaps(LineReaderImpl.java:5363)
	at org.jline.reader.impl.LineReaderImpl.<init>(LineReaderImpl.java:266)
	at org.jline.reader.LineReaderBuilder.build(LineReaderBuilder.java:115)
	at org.elasticsearch.xpack.sql.cli.JLineTerminal.<init>(JLineTerminal.java:47)
	at org.elasticsearch.xpack.sql.cli.Cli.main(Cli.java:58)
Caused by: java.lang.UnsupportedOperationException
	at org.jline.utils.Curses.doTputs(Curses.java:78)
	at org.jline.utils.Curses.tputs(Curses.java:60)
	... 19 more

Workaround:

  1. Change the TERM to xterm and try again:
    export TERM=xterm

The issue seems to be related to a JLine bug: jline/jline3#408

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions