mongo-java-server
mongo-java-server copied to clipboard
io.netty.handler.codec.DecoderException: java.io.IOException: unhandled type: 0xd
Dear all,
I've tried your library to integrate an embedded mongodb into springboot application. Everything works fine until I met up with the exception:
io.netty.handler.codec.DecoderException: java.io.IOException: unhandled type: 0xd
After I checked the source code, I see that it seems your mongo-java-server is not supporting javascript as message type for mongo server. Is that true?
I need to upload extended functionalities of mongodb using javascript. Would there be any work around? Or am I missing something here?
Followed is the complete error message:
2019-05-04 00:45:40.026 INFO 13968 --- [-server-worker2] d.b.mongo.backend.AbstractMongoDatabase : adding unique _id index for collection counter
2019-05-04 00:45:40.027 INFO 13968 --- [-server-worker2] d.b.mongo.backend.AbstractMongoDatabase : created collection verteilung.counter
2019-05-04 00:45:40.070 ERROR 13968 --- [-server-worker2] d.b.mongo.wire.MongoExceptionHandler : exception for client 8f9a1e8b
io.netty.handler.codec.DecoderException: java.io.IOException: unhandled type: 0xd
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:472) ~[netty-codec-4.1.35.Final.jar:4.1.35.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278) ~[netty-codec-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:682) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:617) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:534) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906) [netty-common-4.1.35.Final.jar:4.1.35.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.35.Final.jar:4.1.35.Final]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
Caused by: java.io.IOException: unhandled type: 0xd
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeValue(BsonDecoder.java:101) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeBson(BsonDecoder.java:39) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeValue(BsonDecoder.java:55) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeBson(BsonDecoder.java:39) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeValue(BsonDecoder.java:55) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeBson(BsonDecoder.java:39) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeArray(BsonDecoder.java:116) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeValue(BsonDecoder.java:58) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeBson(BsonDecoder.java:39) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.MongoWireProtocolHandler.handleQuery(MongoWireProtocolHandler.java:174) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.MongoWireProtocolHandler.decode(MongoWireProtocolHandler.java:87) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.MongoWireProtocolHandler.decode(MongoWireProtocolHandler.java:27) ~[mongo-java-server-core-1.15.0.jar:na]
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:334) ~[netty-codec-4.1.35.Final.jar:4.1.35.Final]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502) ~[netty-codec-4.1.35.Final.jar:4.1.35.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441) ~[netty-codec-4.1.35.Final.jar:4.1.35.Final]
... 16 common frames omitted
2019-05-04 00:45:40.072 INFO 13968 --- [-server-worker2] d.b.mongo.wire.MongoWireProtocolHandler : channel [id: 0x8f9a1e8b, L:/127.0.0.1:60036 ! R:/127.0.0.1:60049] closed
2019-05-04 00:45:40.074 WARN 13968 --- [ main] org.mongodb.driver.connection : Got socket exception on connection [connectionId{localValue:2}] to 127.0.0.1:60036. All connections to 127.0.0.1:60036 will be closed.
2019-05-04 00:45:40.075 INFO 13968 --- [ main] org.mongodb.driver.connection : Closed connection [connectionId{localValue:2}] to 127.0.0.1:60036 because there was a socket exception raised by this connection.
2019-05-04 00:45:40.077 WARN 13968 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'primaryMongoPreparator': Invocation of init method failed; nested exception is org.springframework.data.mongodb.UncategorizedMongoDbException: Prematurely reached end of stream; nested exception is com.mongodb.MongoSocketReadException: Prematurely reached end of stream
Thanks for the bug report. Support for JavaScript code was not yet implemented. I’ve added initial support in dc5bbb1. Can you re-test?
Thanks for your quick fix. I've updated my maven project and it got the newest version from 05.05. 17:01. However I still met up with similar issue by retesting it. Following is the complete trace.
2019-05-06 17:38:11.961 ERROR 3616 --- [-server-worker3] d.b.mongo.wire.MongoExceptionHandler : exception for client bd20fa87
**io.netty.handler.codec.DecoderException: java.io.IOException: unhandled type: 0xd
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:472) ~[netty-codec-4.1.35.Final.jar:4.1.35.Final]**
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278) ~[netty-codec-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:682) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:617) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:534) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) [netty-transport-4.1.35.Final.jar:4.1.35.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906) [netty-common-4.1.35.Final.jar:4.1.35.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.35.Final.jar:4.1.35.Final]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
Caused by: java.io.IOException: unhandled type: 0xd
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeValue(BsonDecoder.java:101) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeBson(BsonDecoder.java:39) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeValue(BsonDecoder.java:55) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeBson(BsonDecoder.java:39) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeValue(BsonDecoder.java:55) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeBson(BsonDecoder.java:39) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeArray(BsonDecoder.java:116) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeValue(BsonDecoder.java:58) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeBson(BsonDecoder.java:39) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.MongoWireProtocolHandler.handleQuery(MongoWireProtocolHandler.java:174) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.MongoWireProtocolHandler.decode(MongoWireProtocolHandler.java:87) ~[mongo-java-server-core-1.15.0.jar:na]
at de.bwaldvogel.mongo.wire.MongoWireProtocolHandler.decode(MongoWireProtocolHandler.java:27) ~[mongo-java-server-core-1.15.0.jar:na]
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:334) ~[netty-codec-4.1.35.Final.jar:4.1.35.Final]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502) ~[netty-codec-4.1.35.Final.jar:4.1.35.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441) ~[netty-codec-4.1.35.Final.jar:4.1.35.Final]
... 16 common frames omitted
2019-05-06 17:38:11.963 WARN 3616 --- [ main] org.mongodb.driver.connection : Got socket exception on connection [connectionId{localValue:3}] to localhost:27017. All connections to localhost:27017 will be closed.
2019-05-06 17:38:11.963 INFO 3616 --- [-server-worker3] d.b.mongo.wire.MongoWireProtocolHandler : channel [id: 0xbd20fa87, L:/127.0.0.1:27017 ! R:/127.0.0.1:51079] closed
2019-05-06 17:38:11.965 INFO 3616 --- [ main] org.mongodb.driver.connection : Closed connection [connectionId{localValue:3}] to localhost:27017 because there was a socket exception raised by this connection.
2019-05-06 17:38:11.968 WARN 3616 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'primaryMongoPreparator': Invocation of init method failed; nested exception is org.springframework.data.mongodb.UncategorizedMongoDbException: Prematurely reached end of stream; nested exception is com.mongodb.MongoSocketReadException: Prematurely reached end of stream
2019-05-06 17:38:11.969 INFO 3616 --- [ main] o.j.k.s.i.store.DeploymentSyncInvoker : Shutting down deployment synchronization
2019-05-06 17:38:11.970 INFO 3616 --- [ main] o.j.k.s.i.store.DeploymentSyncInvoker : Deployment synchronization stopped
2019-05-06 17:38:11.980 INFO 3616 --- [-server-worker4] d.b.mongo.wire.MongoWireProtocolHandler : channel [id: 0x86309388, L:/127.0.0.1:27017 ! R:/127.0.0.1:51082] closed
The stacktrace shows that you did not test with the updated version:
[…]
at de.bwaldvogel.mongo.wire.BsonDecoder.decodeValue(BsonDecoder.java:101) ~[mongo-java-server-core-1.15.0.jar:na]
- It shows that you used
mongo-java-server-core-1.15.0.jar
-
BsonDecoder.java:101
doesn’t throw an exception in the latest version
I’ve just released version 1.16.0
which contains the fix.
Thanks for the new version. I've tried it and it throws the error of "io.netty.handler.codec.DecoderException: java.io.IOException: opCode 2010 not supported"
As I checked in https://docs.mongodb.com/manual/reference/mongodb-wire-protocol/#wp-request-opcodes 2010 stands for
OP_COMMAND | 2010 | Cluster internal protocol representing a command request.
As we are sending mongo the commands as well, is there a work around for this?
Can you describe what kind of internal commands you are sending to the server?
In the meantime, the error has been changed. Basically, the problem is with javascript command.
The error message now is:
2019-05-17 11:22:47.900 WARN 13984 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'primaryMongoPreparator': Invocation of init method failed; nested exception is org.springframework.dao.DataIntegrityViolationException: Write failed with error code 10156 and error message 'cannot update system collection'; nested exception is com.mongodb.WriteConcernException: Write failed with error code 10156 and error message 'cannot update system collection'
In the bean primaryMongoPreparator we have built a @PostConstruct where we register a javascript function using org.springframework.data.mongodb.core.ScriptOperations;
The javascript defines a function, like the following:
String script = "function doSth() "+ "{"+ "var ret = db.someCollection.findAndModify(" ......
It seems that this script is causing problem. We are now trying to work around this problem of using org.springframework.data.mongodb.core.query.BasicQuery; instead of register javascript function to MongoDB