|
16 | 16 |
|
17 | 17 | package kamon.annotation.instrumentation.cache;
|
18 | 18 |
|
| 19 | +import com.github.benmanes.caffeine.cache.Caffeine; |
| 20 | +import com.github.benmanes.caffeine.cache.RemovalListener; |
19 | 21 | import kamon.Kamon;
|
20 | 22 | import kamon.annotation.api.Time;
|
21 | 23 | import kamon.annotation.api.TrackConcurrency;
|
|
24 | 26 | import kamon.metric.*;
|
25 | 27 | import kamon.tag.TagSet;
|
26 | 28 | import kamon.trace.SpanBuilder;
|
27 |
| -import kanela.agent.libs.net.jodah.expiringmap.ExpirationListener; |
28 |
| -import kanela.agent.libs.net.jodah.expiringmap.ExpirationPolicy; |
29 |
| -import kanela.agent.libs.net.jodah.expiringmap.ExpiringMap; |
30 | 29 | import kanela.agent.util.log.Logger;
|
31 | 30 |
|
32 | 31 | import java.lang.reflect.Method;
|
33 | 32 | import java.util.Collections;
|
34 | 33 | import java.util.HashMap;
|
35 | 34 | import java.util.Map;
|
36 | 35 | import java.util.Objects;
|
| 36 | +import java.util.concurrent.ConcurrentMap; |
37 | 37 | import java.util.concurrent.TimeUnit;
|
38 | 38 |
|
39 | 39 | public final class AnnotationCache {
|
40 | 40 |
|
41 | 41 | private static Map<MetricKey, Object> metrics = buildCache();
|
42 | 42 |
|
43 | 43 | private static Map<MetricKey, Object> buildCache() {
|
44 |
| - return ExpiringMap |
45 |
| - .builder() |
46 |
| - .expiration(1, TimeUnit.MINUTES) |
47 |
| - .expirationPolicy(ExpirationPolicy.ACCESSED) |
48 |
| - .asyncExpirationListener(ExpirationListener()) |
49 |
| - .build(); |
| 44 | + return Caffeine.newBuilder() |
| 45 | + .expireAfterAccess(1, TimeUnit.MINUTES) |
| 46 | + .removalListener(LogExpirationListener()) |
| 47 | + .build() |
| 48 | + .asMap(); |
50 | 49 | }
|
51 | 50 |
|
52 | 51 | public static Gauge getGauge(Method method, Object obj, Class<?> clazz, String className, String methodName) {
|
@@ -193,8 +192,8 @@ private static String getOperationName(String name, Object obj, Class<?> clazz,
|
193 | 192 | return (evaluatedString.isEmpty() || evaluatedString.equals("unknown")) ? className + "." + methodName: evaluatedString;
|
194 | 193 | }
|
195 | 194 |
|
196 |
| - private static ExpirationListener<MetricKey, Object> ExpirationListener() { |
197 |
| - return (key, value) -> { |
| 195 | + private static RemovalListener<MetricKey, Object> LogExpirationListener() { |
| 196 | + return (key, value, cause) -> { |
198 | 197 | if(value instanceof Instrument) ((Instrument) value).remove();
|
199 | 198 | Logger.debug(() -> "Expiring key: " + key + "with value" + value);
|
200 | 199 | };
|
|
0 commit comments