in archaius2-core/src/main/java/com/netflix/archaius/instrumentation/AccessMonitorUtil.java [153:177]
public void registerUsage(PropertyDetails propertyDetails) {
// Initially, we limit the number of events we keep to one event per property id per flush.
propertyUsageMapRef.get().putIfAbsent(
propertyDetails.getId(),
new PropertyUsageData(createEventList(new PropertyUsageEvent(System.currentTimeMillis()))));
boolean isTrackedProperty = propertiesToTrack.contains(propertyDetails.getKey());
if (recordStackTrace || isTrackedProperty) {
String trace = Arrays.toString(Thread.currentThread().getStackTrace());
// Very crude and will have a very noticeable performance impact, but is
// particularly useful for finding out call sites that iterate over all
// properties.
if (recordStackTrace) {
stackTrace.merge(trace, 1, (v1, v2) -> v1 + 1);
}
if (isTrackedProperty) {
String key = propertyDetails.getKey();
if (!trackedPropertyStackTraces.containsKey(key)) {
trackedPropertyStackTraces.put(key, ConcurrentHashMap.newKeySet());
}
trackedPropertyStackTraces.get(key).add(trace);
}
}
}