-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problems with Db2 reactive client when accessing a remote Db2 instance #14117
Comments
/cc @aguibert |
@mswatosh could you have a look please? |
the same here |
I haven't been able to reproduce this locally (Though I see that CodePoint 1909 is missing). We're hitting this when running through Access Security, so is there any sort of security beyond basic user/password set on the DB2 server instance? |
Thank you very much i resolve my issue. |
@RajaManeshKumar How did you resolve it? @aguibert talked about in a other issue about codepoint 1909 carries info about the encryption algorithm being used and how there is no encrypting implemented in the reactive db2 driver. |
@RajaManeshKumar @aguibert Hi Andrew, do you have any insight on this? Request failed: java.lang.IllegalStateException: Expected code point 14ac but was fffffffe |
Same here!. Request failed: java.lang.IllegalStateException: Expected code point 14ac but was fffffffe using quarkus 3.3.2, java 17 and db2 as database. |
Is this still an issue with the latest versions of Quarkus? |
Closing for lack of feedback |
Describe the bug
It looks like the reactive access to Db2 is aborting with problems in the security/encryption area.
However, the remote Db2 instance does not use encryption. No specific Db2 libraries are used either (see POM excerpt).
Access via JDBC works without problems. The metadata provides information about which Db2 version is used.
Expected behavior
Timestamp information is printed
Actual behavior
JDBC Access:
curl -H"Accept: text/plain" localhost:80/dbaccess/jdbc
[db name = DB2/AIX64
, db version = SQL110122
, driver name = IBM Data Server Driver for JDBC and SQLJ
, driver version = 4.27.25]
Reactive Access:
ERROR [org.jbo.res.res.i18n] (vert.x-eventloop-thread-14) RESTEASY002020: Unhandled asynchronous exception, sending back 500: java.lang.IllegalStateException: Found invalid codepoint: 1909
at io.vertx.db2client.impl.drda.DRDAConnectResponse.parseACCSECRD(DRDAConnectResponse.java:1441)
at io.vertx.db2client.impl.drda.DRDAConnectResponse.parseACCSECreply(DRDAConnectResponse.java:1169)
at io.vertx.db2client.impl.drda.DRDAConnectResponse.readAccessSecurity(DRDAConnectResponse.java:35)
at io.vertx.db2client.impl.codec.InitialHandshakeCommandCodec.decodePayload(InitialHandshakeCommandCodec.java:96)
at io.vertx.db2client.impl.codec.DB2Decoder.decodePayload(DB2Decoder.java:80)
at io.vertx.db2client.impl.codec.DB2Decoder.decode(DB2Decoder.java:53)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:834)
ERROR [io.qua.ver.cor.run.VertxCoreRecorder] (vert.x-eventloop-thread-14) Uncaught exception received by Vert.x: java.lang.IllegalStateException: Result is already complete: failed
at io.vertx.core.impl.FutureImpl.fail(FutureImpl.java:126)
at io.vertx.sqlclient.impl.ConnectionPool.lambda$check$0(ConnectionPool.java:216)
at io.vertx.sqlclient.impl.command.CommandBase.fail(CommandBase.java:31)
at io.vertx.db2client.impl.codec.InitialHandshakeCommandCodec.lambda$encode$0(InitialHandshakeCommandCodec.java:55)
at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:366)
at io.vertx.core.impl.EventLoopContext.lambda$executeAsync$0(EventLoopContext.java:38)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:834)
To Reproduce
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.List;
import io.smallrye.mutiny.Multi;
@path("/dbaccess")
public class Db2AccessResource {
@Inject
JDBCService jdbcService;
}
import io.agroal.api.AgroalDataSource;
import io.quarkus.agroal.DataSource;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.sql.*;
@ApplicationScoped
public class JDBCService {
}
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import io.vertx.mutiny.db2client.DB2Pool;
import io.vertx.mutiny.sqlclient.Row;
import io.vertx.mutiny.sqlclient.Tuple;
import io.smallrye.mutiny.Multi;
@ApplicationScoped
public class ReactiveService {
}
Steps to reproduce the behavior:
Configuration
!!Server name and port number are anonymised!!
POM
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<maven.compiler.parameters>true</maven.compiler.parameters>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus-plugin.version>1.10.5.Final</quarkus-plugin.version>
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
<quarkus.platform.version>1.10.5.Final</quarkus.platform.version>
<surefire-plugin.version>2.22.1</surefire-plugin.version>
${quarkus.platform.group-id}
${quarkus.platform.artifact-id}
${quarkus.platform.version}
pom
import
io.quarkus
quarkus-resteasy-jsonb
io.quarkus
quarkus-resteasy
io.quarkus
quarkus-agroal
io.quarkus
quarkus-arc
io.quarkus
quarkus-junit5
test
io.rest-assured
rest-assured
test
io.quarkus
quarkus-jdbc-db2
io.quarkus
quarkus-reactive-db2-client
io.quarkus
quarkus-resteasy-mutiny
Environment (please complete the following information):
Output of
uname -a
orver
:Darwin MAC2412HTDD 19.6.0 Darwin Kernel Version 19.6.0: Thu Oct 29 22:56:45 PDT 2020;
Output of
java -version
:openjdk 11.0.6 2020-01-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.6+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.6+10, mixed mode)
GraalVM version (if different from Java):
not used in the sample
Quarkus version or git rev:
1.10.5.Final
Build tool (ie. output of
mvnw --version
orgradlew --version
):maven 3.6.3, Intellij 2020.3
Additional context
(Add any other context about the problem here.)
The text was updated successfully, but these errors were encountered: