Every time the executeQuery hangs and throws this exception.
I tried this in a project with a simple main() function without Wildfly. It worked there.
test method
public void test() throws ExecutionException, InterruptedException {
Client client = Client.create(ClientOptions.create()
.setHost("localhost")
.setPort(8088));
HashMap<String, Object> props = new HashMap<>();
String sql = "SELECT * FROM SomeTable;";
List<Row> rows = client.executeQuery(sql, props).get();
for(Row row : rows) {
System.out.println(row);
}
client.close();
}
error
15:32:06,698 ERROR [io.confluent.shaded.io.vertx.core.impl.ContextBase] (vert.x-eventloop-thread-1) Unhandled exception: java.lang.NoSuchMethodError: 'void io.confluent.ksql.util.VertxUtils.checkContext(io.confluent.shaded.io.vertx.core.Context)'
at deployment.myproject-1.0.war//io.confluent.ksql.api.client.impl.ResponseHandler.checkContext(ResponseHandler.java:59)
at deployment.myproject-1.0.war//io.confluent.ksql.api.client.impl.ResponseHandler.handleBodyBuffer(ResponseHandler.java:38)
at deployment.myproject-1.0.war//io.confluent.ksql.api.client.impl.ExecuteQueryResponseHandler.handleBodyBuffer(ExecuteQueryResponseHandler.java:37)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.parsetools.impl.RecordParserImpl.handleParsing(RecordParserImpl.java:214)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.parsetools.impl.RecordParserImpl.lambda$handler$0(RecordParserImpl.java:316)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:264)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:246)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.http.impl.HttpEventHandler.handleEnd(HttpEventHandler.java:76)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.http.impl.HttpClientResponseImpl.handleEnd(HttpClientResponseImpl.java:250)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.http.impl.Http2ClientConnection$StreamImpl.handleEnd(Http2ClientConnection.java:450)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.http.impl.VertxHttp2Stream.lambda$new$1(VertxHttp2Stream.java:63)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:239)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:129)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:55)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.impl.ContextBase.emit(ContextBase.java:239)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.http.impl.VertxHttp2Stream.onEnd(VertxHttp2Stream.java:135)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.http.impl.Http2ClientConnection$Stream.onEnd(Http2ClientConnection.java:277)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.http.impl.VertxHttp2Stream.onEnd(VertxHttp2Stream.java:130)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.http.impl.Http2ConnectionBase.onDataRead(Http2ConnectionBase.java:315)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.http2.Http2FrameListenerDecorator.onDataRead(Http2FrameListenerDecorator.java:36)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.http2.Http2EmptyDataFrameListener.onDataRead(Http2EmptyDataFrameListener.java:49)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onDataRead(DefaultHttp2ConnectionDecoder.java:307)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader.readDataFrame(DefaultHttp2FrameReader.java:415)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:250)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:159)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:173)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.http2.DecoratingHttp2ConnectionDecoder.decodeFrame(DecoratingHttp2ConnectionDecoder.java:63)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:393)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:453)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
at deployment.myproject-1.0.war//io.confluent.shaded.io.vertx.core.http.impl.VertxHttp2ConnectionHandler.channelRead(VertxHttp2ConnectionHandler.java:408)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at deployment.myproject-1.0.war//io.confluent.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
But the method DOES exists because I can call it.
io.confluent.shaded.io.vertx.core.Context context = ...;
io.confluent.ksql.util.VertxUtils.checkContext(context);
I created a test project: https://github.com/G33RY/testksqldb
I have also opened an issue on Github, but I need this resolved somehow, in the near future not months later. https://github.com/confluentinc/ksql/issues/10018
Okay I found the solution by the help of @William Tatam.
He suggested I should use the dependency without the <classifier>with-dependencies</classifier>
.
Then I had to add the other dependencies. I also switched to the confluent
repository version 7.4.0
.
Here is my pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>testksqldb</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<name>testksqldb</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<ksqldb.version>7.4.0</ksqldb.version>
</properties>
<repositories>
<repository>
<id>ksqlDB</id>
<name>ksqlDB</name>
<url>https://ksqldb-maven.s3.amazonaws.com/maven/</url>
</repository>
<repository>
<id>confluent</id>
<name>Confluent</name>
<url>https://packages.confluent.io/maven/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>ksqlDB</id>
<url>https://ksqldb-maven.s3.amazonaws.com/maven/</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.confluent.ksql</groupId>
<artifactId>ksqldb-api-client</artifactId>
<version>${ksqldb.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
<version>2.14.2</version>
</dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<version>4.7.1</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
</dependency>
<dependency>
<groupId>io.confluent.ksql</groupId>
<artifactId>ksqldb-common</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>4.3.7</version>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-codegen</artifactId>
<version>4.3.7</version>
</dependency>
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams</artifactId>
<version>1.0.3</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>${basedir}/src</sourceDirectory>
<resources>
<resource>
<directory>${basedir}/src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<warSourceDirectory>${basedir}/WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
<compilerArgs>
<arg>-Xlint:all</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
</project>