9
9
import io .opentelemetry .javaagent .bootstrap .internal .ClassLoaderMatcherCacheHolder ;
10
10
import io .opentelemetry .javaagent .bootstrap .internal .InClassLoaderMatcher ;
11
11
import java .util .BitSet ;
12
- import java .util .List ;
13
- import java .util .concurrent .CopyOnWriteArrayList ;
14
12
import java .util .concurrent .atomic .AtomicInteger ;
15
13
import java .util .concurrent .locks .Lock ;
16
14
import java .util .concurrent .locks .ReentrantReadWriteLock ;
@@ -31,9 +29,6 @@ class ClassLoaderHasClassesNamedMatcher extends ElementMatcher.Junction.Abstract
31
29
for (int i = 0 ; i < resources .length ; i ++) {
32
30
resources [i ] = resources [i ].replace ("." , "/" ) + ".class" ;
33
31
}
34
- if (useCache ) {
35
- Manager .INSTANCE .add (this );
36
- }
37
32
}
38
33
39
34
@ Override
@@ -65,28 +60,18 @@ private static boolean hasResources(ClassLoader cl, String... resources) {
65
60
66
61
private static class Manager {
67
62
static final Manager INSTANCE = new Manager ();
68
- private final List <ClassLoaderHasClassesNamedMatcher > matchers = new CopyOnWriteArrayList <>();
69
63
// each matcher gets a two bits in BitSet, that first bit indicates whether current matcher has
70
64
// been run for given class loader and the second whether it matched or not
71
65
private final Cache <ClassLoader , BitSet > enabled = Cache .weak ();
72
66
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock ();
73
67
private final Lock readLock = lock .readLock ();
74
68
private final Lock writeLock = lock .writeLock ();
75
- private volatile boolean matchCalled = false ;
76
69
77
70
Manager () {
78
71
ClassLoaderMatcherCacheHolder .addCache (enabled );
79
72
}
80
73
81
- void add (ClassLoaderHasClassesNamedMatcher matcher ) {
82
- if (matchCalled ) {
83
- throw new IllegalStateException ("All matchers should be create before match is called" );
84
- }
85
- matchers .add (matcher );
86
- }
87
-
88
74
boolean match (ClassLoaderHasClassesNamedMatcher matcher , ClassLoader cl ) {
89
- matchCalled = true ;
90
75
BitSet set = enabled .computeIfAbsent (cl , (unused ) -> new BitSet (counter .get () * 2 ));
91
76
int matcherRunBit = 2 * matcher .index ;
92
77
int matchedBit = matcherRunBit + 1 ;
0 commit comments