Got this from some message driven beans that use a utility class that has dozer as a private static final volatile class member. The exceptions happend pretty much right after startup. Don't have time to look further into it right now, but thought id report it still.
2006-09-23 14:44:41,888 ERROR [WorkManager(3)-16] [net.sf.dozer.util.mapping.MappingProcessor] Field mapping error -->
MapId: null
Type: null
Source parent class: mysys.external.FlightLeg
Source field name: flightInfo
Source field type: class mysys.external.FlightInfo
Source field value: mysys.external.FlightInfo@58a52db3
Dest parent class: mysys.internal.FlightLeg
Dest field name: flightInfo
Dest field type: mysys.internal.FlightInfo
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787)
at java.util.HashMap$EntryIterator.next(HashMap.java:829)
at java.util.HashMap$EntryIterator.next(HashMap.java:827)
at java.util.HashMap.putAllForCreate(HashMap.java:427)
at java.util.HashMap.<init>(HashMap.java:219)
at net.sf.dozer.util.mapping.util.ClassMapFinder.findInterfaceOrAbstractMapping(ClassMapFinder.java:87)
at net.sf.dozer.util.mapping.util.ClassMapFinder.findClassMap(ClassMapFinder.java:42)
at net.sf.dozer.util.mapping.MappingProcessor.getClassMap(MappingProcessor.java:1040)
at net.sf.dozer.util.mapping.MappingProcessor.mapCustomObject(MappingProcessor.java:500)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:451)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:387)
at net.sf.dozer.util.mapping.MappingProcessor.mapFromFieldMap(MappingProcessor.java:306)
at net.sf.dozer.util.mapping.MappingProcessor.mapField(MappingProcessor.java:277)
at net.sf.dozer.util.mapping.MappingProcessor.map(MappingProcessor.java:230)
at net.sf.dozer.util.mapping.MappingProcessor.mapCustomObject(MappingProcessor.java:504)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:451)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:387)
at net.sf.dozer.util.mapping.MappingProcessor.addOrUpdateToList(MappingProcessor.java:810)
at net.sf.dozer.util.mapping.MappingProcessor.mapArrayToArray(MappingProcessor.java:669)
at net.sf.dozer.util.mapping.MappingProcessor.mapCollection(MappingProcessor.java:528)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:431)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:387)
at net.sf.dozer.util.mapping.MappingProcessor.mapFromFieldMap(MappingProcessor.java:306)
at net.sf.dozer.util.mapping.MappingProcessor.mapField(MappingProcessor.java:277)
at net.sf.dozer.util.mapping.MappingProcessor.map(MappingProcessor.java:230)
at net.sf.dozer.util.mapping.MappingProcessor.mapCustomObject(MappingProcessor.java:504)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:451)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:387)
at net.sf.dozer.util.mapping.MappingProcessor.mapFromFieldMap(MappingProcessor.java:306)
at net.sf.dozer.util.mapping.MappingProcessor.mapField(MappingProcessor.java:277)
at net.sf.dozer.util.mapping.MappingProcessor.map(MappingProcessor.java:230)
at net.sf.dozer.util.mapping.MappingProcessor.map(MappingProcessor.java:136)
at net.sf.dozer.util.mapping.MappingProcessor.map(MappingProcessor.java:110)
at net.sf.dozer.util.mapping.DozerBeanMapper.map(DozerBeanMapper.java:108)
[...]
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bjorn, Thanks for finding this and posting. I am reopening bug #1550275. We thought we had it fixed, but I think there is still a small bug with the current code. The problem is that the custom mappings Map is sychronized, so you will see the concurrent mod ex if you are iterating over the map and another thread is trying to modify the map. I think the chances of the exception are relatively small and I think it will be isolated to app initialization as this is when the custom mappings map is being modified
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have fixed the issue in the 2.4 code base. I attached a 2.3 patch to the bug that you can use until the formal release of 2.4. Thanks again for posting this defect. It was a good find
The patch jar is named dozerpatch_23_001.jar
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Downloaded the fixed classes about three weeks ago and haven't had any problems since then, so a big thanks for quickly fixing the problem and overall for giving us a very good product.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Got this from some message driven beans that use a utility class that has dozer as a private static final volatile class member. The exceptions happend pretty much right after startup. Don't have time to look further into it right now, but thought id report it still.
2006-09-23 14:44:41,888 ERROR [WorkManager(3)-16] [net.sf.dozer.util.mapping.MappingProcessor] Field mapping error -->
MapId: null
Type: null
Source parent class: mysys.external.FlightLeg
Source field name: flightInfo
Source field type: class mysys.external.FlightInfo
Source field value: mysys.external.FlightInfo@58a52db3
Dest parent class: mysys.internal.FlightLeg
Dest field name: flightInfo
Dest field type: mysys.internal.FlightInfo
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787)
at java.util.HashMap$EntryIterator.next(HashMap.java:829)
at java.util.HashMap$EntryIterator.next(HashMap.java:827)
at java.util.HashMap.putAllForCreate(HashMap.java:427)
at java.util.HashMap.<init>(HashMap.java:219)
at net.sf.dozer.util.mapping.util.ClassMapFinder.findInterfaceOrAbstractMapping(ClassMapFinder.java:87)
at net.sf.dozer.util.mapping.util.ClassMapFinder.findClassMap(ClassMapFinder.java:42)
at net.sf.dozer.util.mapping.MappingProcessor.getClassMap(MappingProcessor.java:1040)
at net.sf.dozer.util.mapping.MappingProcessor.mapCustomObject(MappingProcessor.java:500)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:451)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:387)
at net.sf.dozer.util.mapping.MappingProcessor.mapFromFieldMap(MappingProcessor.java:306)
at net.sf.dozer.util.mapping.MappingProcessor.mapField(MappingProcessor.java:277)
at net.sf.dozer.util.mapping.MappingProcessor.map(MappingProcessor.java:230)
at net.sf.dozer.util.mapping.MappingProcessor.mapCustomObject(MappingProcessor.java:504)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:451)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:387)
at net.sf.dozer.util.mapping.MappingProcessor.addOrUpdateToList(MappingProcessor.java:810)
at net.sf.dozer.util.mapping.MappingProcessor.mapArrayToArray(MappingProcessor.java:669)
at net.sf.dozer.util.mapping.MappingProcessor.mapCollection(MappingProcessor.java:528)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:431)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:387)
at net.sf.dozer.util.mapping.MappingProcessor.mapFromFieldMap(MappingProcessor.java:306)
at net.sf.dozer.util.mapping.MappingProcessor.mapField(MappingProcessor.java:277)
at net.sf.dozer.util.mapping.MappingProcessor.map(MappingProcessor.java:230)
at net.sf.dozer.util.mapping.MappingProcessor.mapCustomObject(MappingProcessor.java:504)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:451)
at net.sf.dozer.util.mapping.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:387)
at net.sf.dozer.util.mapping.MappingProcessor.mapFromFieldMap(MappingProcessor.java:306)
at net.sf.dozer.util.mapping.MappingProcessor.mapField(MappingProcessor.java:277)
at net.sf.dozer.util.mapping.MappingProcessor.map(MappingProcessor.java:230)
at net.sf.dozer.util.mapping.MappingProcessor.map(MappingProcessor.java:136)
at net.sf.dozer.util.mapping.MappingProcessor.map(MappingProcessor.java:110)
at net.sf.dozer.util.mapping.DozerBeanMapper.map(DozerBeanMapper.java:108)
[...]
Bjorn, Thanks for finding this and posting. I am reopening bug #1550275. We thought we had it fixed, but I think there is still a small bug with the current code. The problem is that the custom mappings Map is sychronized, so you will see the concurrent mod ex if you are iterating over the map and another thread is trying to modify the map. I think the chances of the exception are relatively small and I think it will be isolated to app initialization as this is when the custom mappings map is being modified
I have fixed the issue in the 2.4 code base. I attached a 2.3 patch to the bug that you can use until the formal release of 2.4. Thanks again for posting this defect. It was a good find
The patch jar is named dozerpatch_23_001.jar
Downloaded the fixed classes about three weeks ago and haven't had any problems since then, so a big thanks for quickly fixing the problem and overall for giving us a very good product.