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

Reply via email to