Skip to content

MappedFieldsTracker throws Exceptions #821

@xiaoxiaoxing

Description

@xiaoxiaoxing

Are you in the right place?

  • For issues or feature requests related to the code in this repository file a Github issue.
  • For general technical questions, post a question on Google Groups.

Whats your runtime?

  • Dozer version: 6.5.1
  • OS version: _____
  • JDK version: 8

Whats the problem?

I am trying to upgrade DozerMapper from5.4 to 6.x, I started to see spike of Exceptions from DozerMapper when deployed the change to production environment. I could not reproduce the issue in our gamma environment by manually triggering some requests. I am not familiar with the DozerMapper implemention, I am wondering do you have any idea what could happen here? Thanks.

There are two types of Exceptions:

  1. java.lang.IllegalStateException: No transaction with ID 0
  2. java.lang.NullPointerException: null

Looks like the "No transaction with ID" exception was thrown from pendingTransactions in MappedFieldsTracker, is MappedFieldsTracker a singleton? Is it supposed to be thread safe?

I pasted parts of the logs here:
java.lang.IllegalStateException: No transaction with ID 0 at com.github.dozermapper.core.MappedFieldsTracker.commitTransaction(MappedFieldsTracker.java:99) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.addOrUpdateToList(MappingProcessor.java:901) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.addOrUpdateToList(MappingProcessor.java:961) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapListToList(MappingProcessor.java:791) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapCollection(MappingProcessor.java:641) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:500) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapFromFieldMap(MappingProcessor.java:404) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapField(MappingProcessor.java:354) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.map(MappingProcessor.java:314) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapToDestObject(MappingProcessor.java:263) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.createByCreationDirectiveAndMap(MappingProcessor.java:236) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapGeneral(MappingProcessor.java:209) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.map(MappingProcessor.java:132) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.map(MappingProcessor.java:127) ~[dozer-core-6.5.1.jar:?] at xxxCustomConverter.convert(xxxCustomConverter.java:40) ~[xxxService-1.0.jar:?]

java.lang.NullPointerException: null at com.github.dozermapper.core.MappedFieldsTracker.put(MappedFieldsTracker.java:155) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.map(MappingProcessor.java:273) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapToDestObject(MappingProcessor.java:263) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.createByCreationDirectiveAndMap(MappingProcessor.java:236) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapCustomObject(MappingProcessor.java:575) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:512) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.addOrUpdateToList(MappingProcessor.java:885) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.addOrUpdateToList(MappingProcessor.java:961) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapListToList(MappingProcessor.java:791) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapCollection(MappingProcessor.java:641) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:500) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapFromFieldMap(MappingProcessor.java:404) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapField(MappingProcessor.java:354) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.map(MappingProcessor.java:314) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapToDestObject(MappingProcessor.java:263) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.createByCreationDirectiveAndMap(MappingProcessor.java:236) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.mapGeneral(MappingProcessor.java:209) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.map(MappingProcessor.java:132) ~[dozer-core-6.5.1.jar:?] at com.github.dozermapper.core.MappingProcessor.map(MappingProcessor.java:127) ~[dozer-core-6.5.1.jar:?] at xxxCustomConverter.convert(xxxCustomConverter.java:40) ~[xxxService-1.0.jar:?]

Observed Results:

Exceptions from DozerMapper.

Expected Results:

No Exception from DozerMapper.

Link to GitHub repo with Unit test

NA

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions