bwaldvogel/mongo-java-server

java.lang.ClassCastException during collection.dropIndexes()

rebeccan opened this issue · 3 comments

Hi there :-)

I am trying to run a migration script that drops all indexes of a collection in the inMemory database.

During collection.dropIndexes() I receive the following Exception:

17:22:47.468 [mongo-server-worker2] ERROR d.b.m.w.MongoWireProtocolHandler 	 Unknown error!
java.lang.ClassCastException: java.lang.String cannot be cast to de.bwaldvogel.mongo.bson.Document
	at de.bwaldvogel.mongo.backend.AbstractMongoDatabase.commandDropIndexes(AbstractMongoDatabase.java:430)
	at de.bwaldvogel.mongo.backend.AbstractMongoDatabase.handleCommandSync(AbstractMongoDatabase.java:134)
	at de.bwaldvogel.mongo.backend.AbstractMongoDatabase.lambda$handleCommandAsync$1(AbstractMongoDatabase.java:194)
	at de.bwaldvogel.mongo.util.FutureUtils.wrap(FutureUtils.java:9)
	at de.bwaldvogel.mongo.backend.AbstractMongoDatabase.handleCommandAsync(AbstractMongoDatabase.java:194)
	at de.bwaldvogel.mongo.backend.AbstractMongoBackend.handleCommandAsync(AbstractMongoBackend.java:376)
	at de.bwaldvogel.mongo.wire.MongoDatabaseHandler.handleCommandAsync(MongoDatabaseHandler.java:254)
	at de.bwaldvogel.mongo.wire.MongoDatabaseHandler.handleQueryAsync(MongoDatabaseHandler.java:120)
	at de.bwaldvogel.mongo.wire.MongoDatabaseHandler.channelRead0(MongoDatabaseHandler.java:73)
	at de.bwaldvogel.mongo.wire.MongoDatabaseHandler.channelRead0(MongoDatabaseHandler.java:34)
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
	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.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
	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 java.lang.Thread.run(Thread.java:748)

The piece of code that fails is:

MongoCollection<Document> collection = mongoClient.getDatabase("testDatabase").getCollection("testCollection");
collection.dropIndexes();

Listing collections, creating indexes and listing indexes works fine, so my test must be set up correctly.

I am working with the latest mongo-java-server Version, which is currently 1.35.0.

Can you verify that bug? Will there be a fix?
Thanks in advance!

Thanks for reporting. I’ve implemented support for collection.dropIndexes() in 9161cce.

Awesome! Thank you 👍 I am looking forward to it being released :-)

I’ve just released version 1.36.0