(1) Primary problem: AnnotationMapper locked, lots of threads waiting on the lock

"pool-10-thread-476" daemon prio=10 tid=0x00002aaac4ae8000nid=0x79cb runnable [0x0000000046090000]
   java.lang.Thread.State: RUNNABLE
	at com.thoughtworks.xstream.mapper.AnnotationMapper.processAnnotations(AnnotationMapper.java:157)
	- locked <0x00000006d8d0a790> (a com.thoughtworks.xstream.mapper.AnnotationMapper$WeakHashSet)
	at com.thoughtworks.xstream.mapper.AnnotationMapper.serializedClass(AnnotationMapper.java:108)
	at hudson.util.xstream.MapperDelegate.serializedClass(MapperDelegate.java:39)
	at com.thoughtworks.xstream.mapper.MapperWrapper.serializedClass(MapperWrapper.java:34)
	at com.thoughtworks.xstream.converters.collections.MapConverter.marshal(MapConverter.java:55)
	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:78)
	at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:176)
	at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:163)
	at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:135)
	at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:130)
	at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:120)
	at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:94)
	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:78)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:63)
	at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:98)
	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:38)
	at com.thoughtworks.xstream.XStream.marshal(XStream.java:840)
	at com.thoughtworks.xstream.XStream.marshal(XStream.java:829)
	at com.thoughtworks.xstream.XStream.toXML(XStream.java:804)
	at hudson.XmlFile.write(XmlFile.java:173)
	at hudson.model.Fingerprint.save(Fingerprint.java:841)
	- locked <0x00000006e12dae80> (a hudson.model.Fingerprint)
	at hudson.model.Fingerprint.add(Fingerprint.java:714)
	- locked <0x00000006e12dae80> (a hudson.model.Fingerprint)
	at hudson.model.Fingerprint.add(Fingerprint.java:699)
	- locked <0x00000006e12dae80> (a hudson.model.Fingerprint)
	at hudson.maven.reporters.MavenFingerprinter$1.call(MavenFingerprinter.java:125)
	at hudson.maven.reporters.MavenFingerprinter$1.call(MavenFingerprinter.java:112)
	at hudson.maven.MavenBuild$ProxyImpl.execute(MavenBuild.java:390)
	at hudson.maven.MavenBuild$ProxyImpl2.execute(MavenBuild.java:463)
	...


"pool-10-thread-605" daemon prio=10 tid=0x00002aaac4572800 nid=0xc17 waiting for monitor entry [0x0000000050130000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at com.thoughtworks.xstream.mapper.AnnotationMapper.processAnnotations(AnnotationMapper.java:157)
	- locked <0x00000006d8d0a790> (a com.thoughtworks.xstream.mapper.AnnotationMapper$WeakHashSet)
	at com.thoughtworks.xstream.mapper.AnnotationMapper.serializedClass(AnnotationMapper.java:108)
	at hudson.util.xstream.MapperDelegate.serializedClass(MapperDelegate.java:39)
	at com.thoughtworks.xstream.mapper.MapperWrapper.serializedClass(MapperWrapper.java:34)
	at com.thoughtworks.xstream.converters.collections.MapConverter.marshal(MapConverter.java:55)
	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:78)
	at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:176)
	at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:163)
	at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:135)
	at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:130)
	at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:120)
	at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:94)
	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:78)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:63)
	at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:98)
	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:38)
	at com.thoughtworks.xstream.XStream.marshal(XStream.java:840)
	at com.thoughtworks.xstream.XStream.marshal(XStream.java:829)
	at com.thoughtworks.xstream.XStream.toXML(XStream.java:804)
	at hudson.XmlFile.write(XmlFile.java:173)
	at hudson.model.Fingerprint.save(Fingerprint.java:841)
	- locked <0x00000006df254f98> (a hudson.model.Fingerprint)
	at hudson.model.Fingerprint.add(Fingerprint.java:714)
	- locked <0x00000006df254f98> (a hudson.model.Fingerprint)
	at hudson.model.Fingerprint.add(Fingerprint.java:699)
	- locked <0x00000006df254f98> (a hudson.model.Fingerprint)
	at hudson.maven.reporters.MavenFingerprinter$1.call(MavenFingerprinter.java:125)
	at hudson.maven.reporters.MavenFingerprinter$1.call(MavenFingerprinter.java:112)
	at hudson.maven.MavenBuild$ProxyImpl.execute(MavenBuild.java:390)
	at hudson.maven.MavenBuild$ProxyImpl2.execute(MavenBuild.java:463)
	...
	
	
"pool-10-thread-538" daemon prio=10 tid=0x00002aaac481c000 nid=0x65f9 waiting for monitor entry [0x000000004a7d7000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at com.thoughtworks.xstream.mapper.AnnotationMapper.processAnnotations(AnnotationMapper.java:157)
	- waiting to lock <0x00000006d8d0a790> (a com.thoughtworks.xstream.mapper.AnnotationMapper$WeakHashSet)
	at com.thoughtworks.xstream.mapper.AnnotationMapper.serializedClass(AnnotationMapper.java:108)
	at hudson.util.xstream.MapperDelegate.serializedClass(MapperDelegate.java:39)
	at com.thoughtworks.xstream.mapper.MapperWrapper.serializedClass(MapperWrapper.java:34)
	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeItem(AbstractCollectionConverter.java:62)
	at com.thoughtworks.xstream.converters.collections.MapConverter.marshal(MapConverter.java:58)
	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:78)
	at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:176)
	at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:163)
	at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:135)
	at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:130)
	at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:120)
	at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:94)
	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:78)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:63)
	at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:98)
	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:38)
	at com.thoughtworks.xstream.XStream.marshal(XStream.java:840)
	at com.thoughtworks.xstream.XStream.marshal(XStream.java:829)
	at com.thoughtworks.xstream.XStream.toXML(XStream.java:804)
	at hudson.XmlFile.write(XmlFile.java:173)
	at hudson.model.Fingerprint.save(Fingerprint.java:841)
	- locked <0x00000007071d6f58> (a hudson.model.Fingerprint)
	at hudson.model.Fingerprint.add(Fingerprint.java:714)
	- locked <0x00000007071d6f58> (a hudson.model.Fingerprint)
	at hudson.model.Fingerprint.add(Fingerprint.java:699)
	- locked <0x00000007071d6f58> (a hudson.model.Fingerprint)
	at hudson.maven.reporters.MavenFingerprinter$1.call(MavenFingerprinter.java:125)
	at hudson.maven.reporters.MavenFingerprinter$1.call(MavenFingerprinter.java:112)
	at hudson.maven.MavenBuild$ProxyImpl.execute(MavenBuild.java:390)
	at hudson.maven.MavenBuild$ProxyImpl2.execute(MavenBuild.java:463)
	

(2) Secondary problem: one thread locking FingerPrint but held up by the AnnotationMapper, others waiting on the FingerPrint.add
	
	
"pool-10-thread-472" daemon prio=10 tid=0x00002aaac4714000 nid=0x2971 waiting for monitor entry [0x00000000410d3000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at com.thoughtworks.xstream.mapper.AnnotationMapper.processAnnotations(AnnotationMapper.java:157)
	- waiting to lock <0x00000006d8d0a790> (a com.thoughtworks.xstream.mapper.AnnotationMapper$WeakHashSet)
	at com.thoughtworks.xstream.mapper.AnnotationMapper.serializedClass(AnnotationMapper.java:108)
	at hudson.util.xstream.MapperDelegate.serializedClass(MapperDelegate.java:39)
	at com.thoughtworks.xstream.mapper.MapperWrapper.serializedClass(MapperWrapper.java:34)
	at com.thoughtworks.xstream.converters.collections.MapConverter.marshal(MapConverter.java:55)
	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:78)
	at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:176)
	at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:163)
	at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:135)
	at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:130)
	at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:120)
	at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:94)
	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:78)
	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:63)
	at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:98)
	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:38)
	at com.thoughtworks.xstream.XStream.marshal(XStream.java:840)
	at com.thoughtworks.xstream.XStream.marshal(XStream.java:829)
	at com.thoughtworks.xstream.XStream.toXML(XStream.java:804)
	at hudson.XmlFile.write(XmlFile.java:173)
	at hudson.model.Fingerprint.save(Fingerprint.java:841)
	- locked <0x00000006e97983d0> (a hudson.model.Fingerprint)
	at hudson.model.Fingerprint.add(Fingerprint.java:714)
	- locked <0x00000006e97983d0> (a hudson.model.Fingerprint)
	at hudson.model.Fingerprint.add(Fingerprint.java:699)
	- locked <0x00000006e97983d0> (a hudson.model.Fingerprint)
	at hudson.maven.reporters.MavenFingerprinter$1.call(MavenFingerprinter.java:125)
	at hudson.maven.reporters.MavenFingerprinter$1.call(MavenFingerprinter.java:112)
	at hudson.maven.MavenBuild$ProxyImpl.execute(MavenBuild.java:390)
	at hudson.maven.MavenBuild$ProxyImpl2.execute(MavenBuild.java:463)
	
	
	
	
"pool-10-thread-489" daemon prio=10 tid=0x00002aaac4c76800 nid=0x6fb0 waiting for monitor entry [0x00000000472a3000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at hudson.model.Fingerprint.add(Fingerprint.java:699)
	- waiting to lock <0x00000006e97983d0> (a hudson.model.Fingerprint)
	at hudson.maven.reporters.MavenFingerprinter$1.call(MavenFingerprinter.java:125)
	at hudson.maven.reporters.MavenFingerprinter$1.call(MavenFingerprinter.java:112)
	at hudson.maven.MavenBuild$ProxyImpl.execute(MavenBuild.java:390)
	at hudson.maven.MavenBuild$ProxyImpl2.execute(MavenBuild.java:463)
	at sun.reflect.GeneratedMethodAccessor275.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at hudson.model.Executor$1.call(Executor.java:533)
	at hudson.util.InterceptingProxy$1.invoke(InterceptingProxy.java:23)
	at $Proxy31.execute(Unknown Source)
	at hudson.maven.MavenBuildProxy$Filter$AsyncInvoker.call(MavenBuildProxy.java:270)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:287)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)