public void registerUsage()

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);
            }
        }
    }