ClasspathMonitor hangs sometimes. A thread dump shows that it is wating in isDoublet:
"Thread-8" #33 prio=5 os_prio=0 tid=0x000000001766d000 nid=0x2524 runnable [0x000000001c03e000]
java.lang.Thread.State: RUNNABLE
at java.util.WeakHashMap.get(WeakHashMap.java:403)
at patterntesting.runtime.monitor.ClasspathMonitor.isDoublet_aroundBody2(ClasspathMonitor.java:510)
at patterntesting.runtime.monitor.ClasspathMonitor.isDoublet_aroundBody3$advice(ClasspathMonitor.java:56)
at patterntesting.runtime.monitor.ClasspathMonitor.isDoublet(ClasspathMonitor.java:1)
at patterntesting.runtime.monitor.ClasspathMonitor$DoubletDigger.run(ClasspathMonitor.java:1918)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:
- None
"Thread-7" #32 prio=5 os_prio=0 tid=0x000000001766e800 nid=0x1de8 runnable [0x000000001bf3f000]
java.lang.Thread.State: RUNNABLE
at java.util.WeakHashMap.get(WeakHashMap.java:403)
at patterntesting.runtime.monitor.ClasspathMonitor.isDoublet_aroundBody2(ClasspathMonitor.java:510)
at patterntesting.runtime.monitor.ClasspathMonitor.isDoublet_aroundBody3$advice(ClasspathMonitor.java:56)
at patterntesting.runtime.monitor.ClasspathMonitor.isDoublet(ClasspathMonitor.java:1)
at patterntesting.runtime.monitor.ClasspathMonitor$DoubletDigger.run(ClasspathMonitor.java:1918)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:
- None
"main" #1 prio=5 os_prio=0 tid=0x0000000001e45800 nid=0x15b4 in Object.wait() [0x0000000001e0d000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000fe792738> (a java.lang.Thread)
at java.lang.Thread.join(Thread.java:1245)
- locked <0x00000000fe792738> (a java.lang.Thread)
at java.lang.Thread.join(Thread.java:1319)
at patterntesting.runtime.monitor.ClasspathMonitor.getDoubletListParallel(ClasspathMonitor.java:1864)
at patterntesting.runtime.monitor.ClasspathMonitor.getDoubletList_aroundBody4(ClasspathMonitor.java:610)
at patterntesting.runtime.monitor.ClasspathMonitor.getDoubletList_aroundBody5$advice(ClasspathMonitor.java:56)
at patterntesting.runtime.monitor.ClasspathMonitor.getDoubletList(ClasspathMonitor.java:1)
- locked <0x00000000f0229c68> (a patterntesting.runtime.monitor.ClasspathMonitor)
at patterntesting.runtime.monitor.ClasspathMonitor.getIncompatibleClassList_aroundBody20(ClasspathMonitor.java:1421)
at patterntesting.runtime.monitor.ClasspathMonitor.getIncompatibleClassList_aroundBody21$advice(ClasspathMonitor.java:56)
at patterntesting.runtime.monitor.ClasspathMonitor.getIncompatibleClassList(ClasspathMonitor.java:1)
- locked <0x00000000f0229c68> (a patterntesting.runtime.monitor.ClasspathMonitor)
at patterntesting.runtime.monitor.ClasspathMonitor.getIncompatibleClasspathURIs(ClasspathMonitor.java:1473)
at patterntesting.runtime.monitor.ClasspathMonitor.getIncompatibleClasspath(ClasspathMonitor.java:1467)
fixed with 1.6.1