Search code examples
javaspringspring-bootspring-data-mongodb

Getting Stackoverflow error while upgrading from spring boot 2.7 to 3.0.8


I am upgrading SB version from 2.7.12 to 3.0.8 and while upgrading i am getting the following error -

java.lang.StackOverflowError: null
       at org.springframework.data.mapping.model.ClassGeneratingPropertyAccessorFactory.getPropertyAccessor(ClassGeneratingPropertyAccessorFactory.java:82)
       at org.springframework.data.mapping.model.InstantiationAwarePropertyAccessorFactory.lambda$getPropertyAccessor$0(InstantiationAwarePropertyAccessorFactory.java:42)
       at org.springframework.data.mapping.model.InstantiationAwarePropertyAccessor.getProperty(InstantiationAwarePropertyAccessor.java:124)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeProperties(MappingMongoConverter.java:887)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeInternal(MappingMongoConverter.java:869)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writePropertyInternal(MappingMongoConverter.java:1003)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeProperties(MappingMongoConverter.java:894)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeInternal(MappingMongoConverter.java:869)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writePropertyInternal(MappingMongoConverter.java:1003)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeProperties(MappingMongoConverter.java:894)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeInternal(MappingMongoConverter.java:869)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writePropertyInternal(MappingMongoConverter.java:1003)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeProperties(MappingMongoConverter.java:894)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeInternal(MappingMongoConverter.java:869)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writePropertyInternal(MappingMongoConverter.java:1003)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeProperties(MappingMongoConverter.java:894)
       at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeInternal(MappingMongoConverter.java:869)

I am using the joda.time to access the objects from mongo.

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.xxx.util.JodaDateTimeCustomDeserializer;
import com.xxx.util.JodaDateTimeCustomSerializer;

import org.joda.time.DateTime;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import lombok.Data;

@Document(collection = "data")
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class IMData
{
  @Id
  private String id;
  private String uid;
  @JsonSerialize(using = JodaDateTimeCustomSerializer.class)
  @JsonDeserialize(using = JodaDateTimeCustomDeserializer.class)
  private DateTime timestamp;
  @JsonSerialize(using = JodaDateTimeCustomSerializer.class)
  @JsonDeserialize(using = JodaDateTimeCustomDeserializer.class)
  private DateTime metaDataTimestamp;
  private String ioConfig;
  private int changeCount;
  private String inventoryDbId;
  private String hostname;
  private boolean isManual;
}

IMO, Stack overflow error should mean some circular dependency but the correct is not thrown by Springboot here.


Solution

  • I had to use java.time instead of joda time package to solve this error.