[JAVA-5257] @BsonIgnore doesn't work how it needs to be... Created: 04/Dec/23  Updated: 20/Dec/23  Resolved: 20/Dec/23

Status: Closed
Project: Java Driver
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Question Priority: Major - P3
Reporter: 404GATEAWAY N/A Assignee: Jeffrey Yemin
Resolution: Gone away Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Documentation Changes Summary:

1. What would you like to communicate to the user about this feature?
2. Would you like the user to see examples of the syntax and/or executable code and its output?
3. Which versions of the driver/connector does this apply to?


 Description   

Summary

Please provide a clear and concise description of the bug.
I got few fields with their getters/setters in my POJO class. I put @BsonIgnore on them. But when trying to save the POJO to my collection. It gives me an error, that clearly says that the PojoCodec is trying to serialize the properties that are annotated with @BsonIgnore. I don't want to bson touch or save them.

My code:

public class Location {
    @BsonIgnore
    private Reference<World> world;
 
    private String worldName;
    private double x;
    private double y;
    private double z;
    private float pitch;
    private float yaw;
 
    @BsonCreator
    public Location(@BsonProperty("worldName") String worldName,
                    @BsonProperty("x") double x,
                    @BsonProperty("y") double y,
                    @BsonProperty("z") double z,
                    @BsonProperty("yaw") float yaw,
                    @BsonProperty("pitch") float pitch) 
        this.worldName = worldName;
        this.x = x;
        this.y = y;
        this.z = z;
        this.pitch = pitch;
        this.yaw = yaw;
        setWorld(findWorldByName());
    }
 
    @BsonIgnore
    public void setWorld(Reference<World> world) {
       //....
    }
 
    @BsonIgnore
    public Reference<World> getWorld() {
       //...
    }
    
    // other setters and getters...
}

Error:

 


_[16:09:20] [Server thread/WARN]: [org.bson.codecs.pojo] Cannot use 'CraftWorld' with the PojoCodec.
org.bson.codecs.configuration.CodecConfigurationException: Property 'ticksPerAmbientSpawns' in CraftWorld, has differing data types: TypeData{type=Integer} and TypeData{type=Long}.
    at org.bson.codecs.pojo.ClassModelBuilder.validatePropertyModels(ClassModelBuilder.java:324) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.pojo.ClassModelBuilder.build(ClassModelBuilder.java:293) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.pojo.PojoCodecProvider.createClassModel(PojoCodecProvider.java:226) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.pojo.PojoCodecProvider.createCodec(PojoCodecProvider.java:82) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.pojo.PojoCodecProvider.get(PojoCodecProvider.java:72) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.configuration.CodecProvider.get(CodecProvider.java:70) ~[bson-4.11.0.jar:?]
    at org.bson.internal.ProvidersCodecRegistry.getFromCodecProvider(ProvidersCodecRegistry.java:95) ~[bson-4.11.0.jar:?]
    at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:70) ~[bson-4.11.0.jar:?]
    at org.bson.internal.ProvidersCodecRegistry.getFromCodecProvider(ProvidersCodecRegistry.java:95) ~[bson-4.11.0.jar:?]
    at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:70) ~[bson-4.11.0.jar:?]
    at org.bson.internal.ProvidersCodecRegistry.getFromCodecProvider(ProvidersCodecRegistry.java:95) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.configuration.OverridableUuidRepresentationCodecProvider.get(OverridableUuidRepresentationCodecProvider.java:47) ~[bson-4.11.0.jar:?]
    at org.bson.internal.ProvidersCodecRegistry.getFromCodecProvider(ProvidersCodecRegistry.java:95) ~[bson-4.11.0.jar:?]
    at org.bson.internal.ProvidersCodecRegistry.lambda$get$0(ProvidersCodecRegistry.java:82) ~[bson-4.11.0.jar:?]
    at java.util.Optional.orElseGet(Optional.java:364) ~[?:?]
    at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:80) ~[bson-4.11.0.jar:?]
    at org.bson.internal.ChildCodecRegistry.get(ChildCodecRegistry.java:68) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.pojo.PojoCodecImpl.encode(PojoCodecImpl.java:92) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.pojo.LazyPropertyModelCodec.encode(LazyPropertyModelCodec.java:57) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.EncoderContext.encodeWithChildContext(EncoderContext.java:91) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.pojo.PojoCodecImpl.encodeValue(PojoCodecImpl.java:167) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.pojo.PojoCodecImpl.encodeProperty(PojoCodecImpl.java:146) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.pojo.PojoCodecImpl.encode(PojoCodecImpl.java:88) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:63) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:29) ~[bson-4.11.0.jar:?]
    at com.mongodb.internal.connection.SplittablePayload$WriteRequestEncoder.encode(SplittablePayload.java:216) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.SplittablePayload$WriteRequestEncoder.encode(SplittablePayload.java:182) ~[mongodb-driver-core-4.11.0.jar:?]
    at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:63) ~[bson-4.11.0.jar:?]
    at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:29) ~[bson-4.11.0.jar:?]
    at com.mongodb.internal.connection.BsonWriterHelper.writeDocument(BsonWriterHelper.java:77) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.BsonWriterHelper.writePayload(BsonWriterHelper.java:59) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.CommandMessage.encodeMessageBodyWithMetadata(CommandMessage.java:162) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.RequestMessage.encode(RequestMessage.java:136) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.CommandMessage.encode(CommandMessage.java:59) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:360) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.UsageTrackingInternalConnection.sendAndReceive(UsageTrackingInternalConnection.java:114) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.sendAndReceive(DefaultConnectionPool.java:765) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.CommandProtocolImpl.execute(CommandProtocolImpl.java:76) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:209) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:115) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.DefaultServerConnection.command(DefaultServerConnection.java:83) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.connection.DefaultServer$OperationCountTrackingConnection.command(DefaultServer.java:307) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.MixedBulkWriteOperation.executeCommand(MixedBulkWriteOperation.java:395) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.MixedBulkWriteOperation.executeBulkWriteBatch(MixedBulkWriteOperation.java:259) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.MixedBulkWriteOperation.lambda$execute$2(MixedBulkWriteOperation.java:203) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.SyncOperationHelper.lambda$withSourceAndConnection$0(SyncOperationHelper.java:127) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.SyncOperationHelper.withSuppliedResource(SyncOperationHelper.java:152) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.SyncOperationHelper.lambda$withSourceAndConnection$1(SyncOperationHelper.java:126) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.SyncOperationHelper.withSuppliedResource(SyncOperationHelper.java:152) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.SyncOperationHelper.withSourceAndConnection(SyncOperationHelper.java:125) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.MixedBulkWriteOperation.lambda$execute$3(MixedBulkWriteOperation.java:188) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.MixedBulkWriteOperation.lambda$decorateWriteWithRetries$0(MixedBulkWriteOperation.java:146) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.async.function.RetryingSyncSupplier.get(RetryingSyncSupplier.java:67) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:207) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.internal.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:77) ~[mongodb-driver-core-4.11.0.jar:?]
    at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:173) ~[mongodb-driver-sync-4.11.0.jar:?]
    at com.mongodb.client.internal.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:1085) ~[mongodb-driver-sync-4.11.0.jar:?]
    at com.mongodb.client.internal.MongoCollectionImpl.executeReplaceOne(MongoCollectionImpl.java:575) ~[mongodb-driver-sync-4.11.0.jar:?]
    at com.mongodb.client.internal.MongoCollectionImpl.replaceOne(MongoCollectionImpl.java:558) ~[mongodb-driver-sync-4.11.0.jar:?]
    at ru.minecomplex.core.impl.repo.MongoRepository.save(MongoRepository.java:95) ~[NetworkBukkit.jar:?]
    at ru.minecomplex.prison.repository.RegionalRepository.create(RegionalRepository.java:71) ~[Prison.jar:?]
    at ru.minecomplex.prison.island.IslandManager.create(IslandManager.java:38) ~[Prison.jar:?]
    at ru.minecomplex.prison.island.IslandManager.get(IslandManager.java:47) ~[Prison.jar:?]
    at ru.minecomplex.prison.util.ContextUtil.lambda$registerContext$2(ContextUtil.java:80) ~[Prison.jar:?]
    at co.aikar.commands.RegisteredCommand.resolveContexts(RegisteredCommand.java:231) ~[NetworkBukkit.jar:?]
    at co.aikar.commands.RegisteredCommand.resolveContexts(RegisteredCommand.java:198) ~[NetworkBukkit.jar:?]
    at co.aikar.commands.RegisteredCommand.invoke(RegisteredCommand.java:135) ~[NetworkBukkit.jar:?]
    at co.aikar.commands.BaseCommand.processCommand(BaseCommand.java:565) ~[NetworkBukkit.jar:?]
    at co.aikar.commands.BaseCommand.executeCommand(BaseCommand.java:552) ~[NetworkBukkit.jar:?]
    at co.aikar.commands.BaseCommand.execute(BaseCommand.java:491) ~[NetworkBukkit.jar:?]
    at co.aikar.commands.RootCommand.execute(RootCommand.java:99) ~[NetworkBukkit.jar:?]
    at co.aikar.commands.BukkitRootCommand.execute(BukkitRootCommand.java:84) ~[NetworkBukkit.jar:?]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:168) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_20_R2.CraftServer.dispatchCommand(CraftServer.java:1005) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
    at org.bukkit.craftbukkit.v1_20_R2.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
    at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:265) ~[purpur-1.20.2.jar:?]
    at net.minecraft.commands.Commands.performCommand(Commands.java:338) ~[?:?]
    at net.minecraft.commands.Commands.performCommand(Commands.java:322) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.performChatCommand(ServerGamePacketListenerImpl.java:2279) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChatCommand$20(ServerGamePacketListenerImpl.java:2239) ~[?:?]
    at net.minecraft.util.thread.BlockableEventLoop.lambda$submitAsync$0(BlockableEventLoop.java:59) ~[?:?]
    at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
    at net.minecraft.server.TickTask.run(TickTask.java:18) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
    at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
    at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
    at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1351) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
    at net.minecraft.server.MinecraftServer.wrapRunnable(MinecraftServer.java:193) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
    at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
    at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1328) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
    at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1321) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
    at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
    at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1299) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1187) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]_

 

 

Please provide the version of the driver. If applicable, please provide the MongoDB server version and topology (standalone, replica set, or sharded cluster).

How to Reproduce

Steps to reproduce. If possible, please include a Short, Self Contained, Correct (Compilable), Example.

Make the same class with any other "World" field that contains a property which gives an similar error.  

Additional Background

Please provide any additional background information that may be helpful in diagnosing the bug.



 Comments   
Comment by PM Bot [ 20/Dec/23 ]

There hasn't been any recent activity on this ticket, so we're resolving it. Thanks for reaching out! Please feel free to reopen this ticket if you're still experiencing the issue, and add a comment if you're able to provide more information.

Comment by PM Bot [ 12/Dec/23 ]

Hi sigamatute@gmail.com! JAVA-5257 is awaiting your response.

If this is still an issue for you, please open Jira to review the latest status and provide your feedback. Thanks!

Comment by Tom Selander [ 04/Dec/23 ]

Hi sigamatute@gmail.com can you please provide a minimal reproducible example for this? Please see here

Comment by PM Bot [ 04/Dec/23 ]

Hi sigamatute@gmail.com, thank you for reporting this issue! The team will look into it and get back to you soon.

Generated at Thu Feb 08 09:04:07 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.