[ https://issues.apache.org/jira/browse/FLINK-33358?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Prabhu Joseph updated FLINK-33358: ---------------------------------- Description: Flink SQL Client fails to start in Flink on YARN with below error {code:java} flink-yarn-session -tm 2048 -s 2 -d /usr/lib/flink/bin/sql-client.sh Exception in thread "main" org.apache.flink.table.client.SqlClientException: Could not read from command line. at org.apache.flink.table.client.cli.CliClient.getAndExecuteStatements(CliClient.java:221) at org.apache.flink.table.client.cli.CliClient.executeInteractive(CliClient.java:179) at org.apache.flink.table.client.cli.CliClient.executeInInteractiveMode(CliClient.java:121) at org.apache.flink.table.client.cli.CliClient.executeInInteractiveMode(CliClient.java:114) at org.apache.flink.table.client.SqlClient.openCli(SqlClient.java:169) at org.apache.flink.table.client.SqlClient.start(SqlClient.java:118) at org.apache.flink.table.client.SqlClient.startClient(SqlClient.java:228) at org.apache.flink.table.client.SqlClient.main(SqlClient.java:179) Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.flink.table.client.config.SqlClientOptions at org.apache.flink.table.client.cli.parser.SqlClientSyntaxHighlighter.highlight(SqlClientSyntaxHighlighter.java:59) at org.jline.reader.impl.LineReaderImpl.getHighlightedBuffer(LineReaderImpl.java:3633) at org.jline.reader.impl.LineReaderImpl.getDisplayedBufferWithPrompts(LineReaderImpl.java:3615) at org.jline.reader.impl.LineReaderImpl.redisplay(LineReaderImpl.java:3554) at org.jline.reader.impl.LineReaderImpl.doCleanup(LineReaderImpl.java:2340) at org.jline.reader.impl.LineReaderImpl.cleanup(LineReaderImpl.java:2332) at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:626) at org.apache.flink.table.client.cli.CliClient.getAndExecuteStatements(CliClient.java:194) ... 7 more {code} The issue is due to the old jline jar from Hadoop (3.3.3) classpath (/usr/lib/hadoop-yarn/lib/jline-3.9.0.jar) taking first precedence. Flink-1.18 requires jline-3.21.0.jar. Placing flink-sql-client.jar (bundled with jline-3.21) before the Hadoop classpath fixes the issue. {code:java} diff --git a/flink-table/flink-sql-client/bin/sql-client.sh b/flink-table/flink-sql-client/bin/sql-client.sh index 24746c5dc8..4ab8635de2 100755 --- a/flink-table/flink-sql-client/bin/sql-client.sh +++ b/flink-table/flink-sql-client/bin/sql-client.sh @@ -89,7 +89,7 @@ if [[ "$CC_CLASSPATH" =~ .*flink-sql-client.*.jar ]]; then elif [ -n "$FLINK_SQL_CLIENT_JAR" ]; then # start client with jar - exec "$JAVA_RUN" $FLINK_ENV_JAVA_OPTS $JVM_ARGS "${log_setting[@]}" -classpath "`manglePathList "$CC_CLASSPATH:$INTERNAL_HADOOP_CLASSPATHS:$FLINK_SQL_CLIENT_JAR"`" org.apache.flink.table.client.SqlClient "$@" --jar "`manglePath $FLINK_SQL_CLIENT_JAR`" + exec "$JAVA_RUN" $FLINK_ENV_JAVA_OPTS $JVM_ARGS "${log_setting[@]}" -classpath "`manglePathList "$CC_CLASSPATH:$FLINK_SQL_CLIENT_JAR:$INTERNAL_HADOOP_CLASSPATHS`" org.apache.flink.table.client.SqlClient "$@" --jar "`manglePath $FLINK_SQL_CLIENT_JAR`" # write error message to stderr else {code} was: Flink SQL Client fails to start in Flink on YARN with below error {code:java} flink-yarn-session -tm 2048 -s 2 -d /usr/lib/flink/bin/sql-client.sh Exception in thread "main" org.apache.flink.table.client.SqlClientException: Could not read from command line. at org.apache.flink.table.client.cli.CliClient.getAndExecuteStatements(CliClient.java:221) at org.apache.flink.table.client.cli.CliClient.executeInteractive(CliClient.java:179) at org.apache.flink.table.client.cli.CliClient.executeInInteractiveMode(CliClient.java:121) at org.apache.flink.table.client.cli.CliClient.executeInInteractiveMode(CliClient.java:114) at org.apache.flink.table.client.SqlClient.openCli(SqlClient.java:169) at org.apache.flink.table.client.SqlClient.start(SqlClient.java:118) at org.apache.flink.table.client.SqlClient.startClient(SqlClient.java:228) at org.apache.flink.table.client.SqlClient.main(SqlClient.java:179) Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.flink.table.client.config.SqlClientOptions at org.apache.flink.table.client.cli.parser.SqlClientSyntaxHighlighter.highlight(SqlClientSyntaxHighlighter.java:59) at org.jline.reader.impl.LineReaderImpl.getHighlightedBuffer(LineReaderImpl.java:3633) at org.jline.reader.impl.LineReaderImpl.getDisplayedBufferWithPrompts(LineReaderImpl.java:3615) at org.jline.reader.impl.LineReaderImpl.redisplay(LineReaderImpl.java:3554) at org.jline.reader.impl.LineReaderImpl.doCleanup(LineReaderImpl.java:2340) at org.jline.reader.impl.LineReaderImpl.cleanup(LineReaderImpl.java:2332) at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:626) at org.apache.flink.table.client.cli.CliClient.getAndExecuteStatements(CliClient.java:194) ... 7 more {code} The issue is due to the old jline jar from Hadoop classpath (/usr/lib/hadoop-yarn/lib/jline-3.9.0.jar) taking first precedence. Flink-1.18 requires jline-3.21.0.jar. Placing flink-sql-client.jar (bundled with jline-3.21) before the Hadoop classpath fixes the issue. {code:java} diff --git a/flink-table/flink-sql-client/bin/sql-client.sh b/flink-table/flink-sql-client/bin/sql-client.sh index 24746c5dc8..4ab8635de2 100755 --- a/flink-table/flink-sql-client/bin/sql-client.sh +++ b/flink-table/flink-sql-client/bin/sql-client.sh @@ -89,7 +89,7 @@ if [[ "$CC_CLASSPATH" =~ .*flink-sql-client.*.jar ]]; then elif [ -n "$FLINK_SQL_CLIENT_JAR" ]; then # start client with jar - exec "$JAVA_RUN" $FLINK_ENV_JAVA_OPTS $JVM_ARGS "${log_setting[@]}" -classpath "`manglePathList "$CC_CLASSPATH:$INTERNAL_HADOOP_CLASSPATHS:$FLINK_SQL_CLIENT_JAR"`" org.apache.flink.table.client.SqlClient "$@" --jar "`manglePath $FLINK_SQL_CLIENT_JAR`" + exec "$JAVA_RUN" $FLINK_ENV_JAVA_OPTS $JVM_ARGS "${log_setting[@]}" -classpath "`manglePathList "$CC_CLASSPATH:$FLINK_SQL_CLIENT_JAR:$INTERNAL_HADOOP_CLASSPATHS`" org.apache.flink.table.client.SqlClient "$@" --jar "`manglePath $FLINK_SQL_CLIENT_JAR`" # write error message to stderr else {code} > Flink SQL Client fails to start in Flink on YARN > ------------------------------------------------ > > Key: FLINK-33358 > URL: https://issues.apache.org/jira/browse/FLINK-33358 > Project: Flink > Issue Type: Bug > Components: Deployment / YARN, Table SQL / Client > Affects Versions: 1.18.0 > Reporter: Prabhu Joseph > Priority: Major > > Flink SQL Client fails to start in Flink on YARN with below error > {code:java} > flink-yarn-session -tm 2048 -s 2 -d > /usr/lib/flink/bin/sql-client.sh > Exception in thread "main" org.apache.flink.table.client.SqlClientException: > Could not read from command line. > at > org.apache.flink.table.client.cli.CliClient.getAndExecuteStatements(CliClient.java:221) > at > org.apache.flink.table.client.cli.CliClient.executeInteractive(CliClient.java:179) > at > org.apache.flink.table.client.cli.CliClient.executeInInteractiveMode(CliClient.java:121) > at > org.apache.flink.table.client.cli.CliClient.executeInInteractiveMode(CliClient.java:114) > at org.apache.flink.table.client.SqlClient.openCli(SqlClient.java:169) > at org.apache.flink.table.client.SqlClient.start(SqlClient.java:118) > at > org.apache.flink.table.client.SqlClient.startClient(SqlClient.java:228) > at org.apache.flink.table.client.SqlClient.main(SqlClient.java:179) > Caused by: java.lang.NoClassDefFoundError: Could not initialize class > org.apache.flink.table.client.config.SqlClientOptions > at > org.apache.flink.table.client.cli.parser.SqlClientSyntaxHighlighter.highlight(SqlClientSyntaxHighlighter.java:59) > at > org.jline.reader.impl.LineReaderImpl.getHighlightedBuffer(LineReaderImpl.java:3633) > at > org.jline.reader.impl.LineReaderImpl.getDisplayedBufferWithPrompts(LineReaderImpl.java:3615) > at > org.jline.reader.impl.LineReaderImpl.redisplay(LineReaderImpl.java:3554) > at > org.jline.reader.impl.LineReaderImpl.doCleanup(LineReaderImpl.java:2340) > at > org.jline.reader.impl.LineReaderImpl.cleanup(LineReaderImpl.java:2332) > at > org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:626) > at > org.apache.flink.table.client.cli.CliClient.getAndExecuteStatements(CliClient.java:194) > ... 7 more > {code} > The issue is due to the old jline jar from Hadoop (3.3.3) classpath > (/usr/lib/hadoop-yarn/lib/jline-3.9.0.jar) taking first precedence. > Flink-1.18 requires jline-3.21.0.jar. > Placing flink-sql-client.jar (bundled with jline-3.21) before the Hadoop > classpath fixes the issue. > {code:java} > diff --git a/flink-table/flink-sql-client/bin/sql-client.sh > b/flink-table/flink-sql-client/bin/sql-client.sh > index 24746c5dc8..4ab8635de2 100755 > --- a/flink-table/flink-sql-client/bin/sql-client.sh > +++ b/flink-table/flink-sql-client/bin/sql-client.sh > @@ -89,7 +89,7 @@ if [[ "$CC_CLASSPATH" =~ .*flink-sql-client.*.jar ]]; then > elif [ -n "$FLINK_SQL_CLIENT_JAR" ]; then > > # start client with jar > - exec "$JAVA_RUN" $FLINK_ENV_JAVA_OPTS $JVM_ARGS "${log_setting[@]}" > -classpath "`manglePathList > "$CC_CLASSPATH:$INTERNAL_HADOOP_CLASSPATHS:$FLINK_SQL_CLIENT_JAR"`" > org.apache.flink.table.client.SqlClient "$@" --jar "`manglePath > $FLINK_SQL_CLIENT_JAR`" > + exec "$JAVA_RUN" $FLINK_ENV_JAVA_OPTS $JVM_ARGS "${log_setting[@]}" > -classpath "`manglePathList > "$CC_CLASSPATH:$FLINK_SQL_CLIENT_JAR:$INTERNAL_HADOOP_CLASSPATHS`" > org.apache.flink.table.client.SqlClient "$@" --jar "`manglePath > $FLINK_SQL_CLIENT_JAR`" > > # write error message to stderr > else > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)