Skip to content
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

io.netty.handler.codec.DecoderException: java.io.IOException: unhandled type: 0xd #67

Open
Research2Go opened this issue May 4, 2019 · 7 comments

Comments

@Research2Go
Copy link

Research2Go commented May 4, 2019

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
@bwaldvogel
Copy link
Owner

Thanks for the bug report. Support for JavaScript code was not yet implemented.
I’ve added initial support in dc5bbb1. Can you re-test?

@Research2Go
Copy link
Author

Research2Go commented May 6, 2019

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

@bwaldvogel
Copy link
Owner

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]

  1. It shows that you used mongo-java-server-core-1.15.0.jar
  2. BsonDecoder.java:101 doesn’t throw an exception in the latest version

@bwaldvogel
Copy link
Owner

I’ve just released version 1.16.0 which contains the fix.

@Research2Go
Copy link
Author

Research2Go commented May 13, 2019

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?

@bwaldvogel
Copy link
Owner

Can you describe what kind of internal commands you are sending to the server?

@Research2Go
Copy link
Author

Research2Go commented May 17, 2019

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants