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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions