Branch: refs/heads/master
Home: https://github.com/jenkinsci/xstream
Commit: bc2bd6df986cc54a90a013d014d4b1fa36a6e023
https://github.com/jenkinsci/xstream/commit/bc2bd6df986cc54a90a013d014d4b1fa36a6e023
Author: Kohsuke Kawaguchi <[email protected]>
Date: 2012-04-26 (Thu, 26 Apr 2012)
Changed paths:
M xstream/src/java/com/thoughtworks/xstream/mapper/AnnotationMapper.java
Log Message:
-----------
[JENKINS-13154] removed hot lock contention
annotatedTypes is used to keep track of classes whose annotations we've already
processed. So on a sufficiently warm system, annotatedTypes.contains(type)
should almost always return true. Thus we just need to move it out of the
synchronization block to be able to eliminate the contention. For this, we use
ConcurrentWeakHashMap instead of regular WeakHashMap.
The processTypes method still needs to run in a synchronized block to prevent
concurrent calls of processAnnotation with the same class to serialize their
executions. It is safe to enter this synchronized block after the initial
annotatedTypes.contains(type) check, as the processTypes method itself guards
against repeated processing of the same type.
Commit: 843b6fff68e2d63b1c97cf4d4a3331e7d154c9a5
https://github.com/jenkinsci/xstream/commit/843b6fff68e2d63b1c97cf4d4a3331e7d154c9a5
Author: Kohsuke Kawaguchi <[email protected]>
Date: 2012-04-26 (Thu, 26 Apr 2012)
Changed paths:
M xstream/pom.xml
Log Message:
-----------
deployed 1.31-jenkins-10
Compare: https://github.com/jenkinsci/xstream/compare/e7bba75...843b6ff