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
Parser Not Available for message type '1' - Mysql #121
Comments
We have tests for stored procedure: https://github.com/jasync-sql/jasync-sql/blob/master/mysql-async/src/test/java/com/github/jasync/sql/db/mysql/StoredProceduresSpec.kt If you can produce something that is similar to your use case it might help us to reproduce. |
Hi Oshai - Thanks for looking at this issue. We are able to recreate this issue with following sample program. Only one resultset is returned from the mysql procedure. Maven project attached. Can you please help fixing this issue. JasyncProcTest.java public class JasyncProcTest { private static final Logger log = LogManager.getLogger(JasyncProcTest.class);
} Exceptions 2019-05-16 12:48:18,342 ERROR [vert.x-eventloop-thread-0] MySQLConnection: Transport failure |
I was able to reproduce that. It seems that in stored procedure call the server is sending another OK packet after EOF packet, unlike regular queries. In most cases, the packet is just thrown away, but in case the next query already started, the state is being corrupted. I am trying to figure out from the protocol docs where is that mentioned and how to support it. |
I see here the following:
So there is an additional OK packet for stored procedure call like I suspected. Still, have to think about how to support that. |
there is an extra OK message after EOF solution keep such state and finish the query only after the OK message result set is also kept in such case because it is sent before
fixed in 0.9.53 |
Thanks a lot oshai. I will test and let you know. |
I tried to call a procedure and return a resultset. But i get this error sometimes. Can someone help me out?
MySQLConnection: Transport failure
com.github.jasync.sql.db.exceptions.ParserNotAvailableException: There is no parser available for message type '1' (1)
at com.github.jasync.sql.db.mysql.codec.MySQLFrameDecoder.handleCommonFlow(MySQLFrameDecoder.kt:152) ~[jasync-mysql-0.9.51.jar:?]
at com.github.jasync.sql.db.mysql.codec.MySQLFrameDecoder.decode(MySQLFrameDecoder.kt:94) ~[jasync-mysql-0.9.51.jar:?]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502) ~[netty-codec-4.1.30.Final.jar:4.1.30.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441) ~[netty-codec-4.1.30.Final.jar:4.1.30.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278) ~[netty-codec-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:644) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458) ~[netty-transport-4.1.30.Final.jar:4.1.30.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897) ~[netty-common-4.1.30.Final.jar:4.1.30.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.30.Final.jar:4.1.30.Final]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]
The text was updated successfully, but these errors were encountered: