diff options
author | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-05-30 17:12:22 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-05-30 17:12:22 +0200 |
commit | d0f53d3a20495b595c3b2f6684be0fae5f9e1f20 (patch) | |
tree | 148b6fceebb9117668ffa43c908b722665ee7127 /jdisc_core/src/main/java/com | |
parent | a6611e973c7c101e74c4dc39165c837eeaf436cb (diff) |
Revert "Misc fixes to ActiveContainerStatistics"
This reverts commit 70e8ea955b7a349408c92fd6b8aeeddcccc8df59.
Diffstat (limited to 'jdisc_core/src/main/java/com')
-rw-r--r-- | jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainerStatistics.java | 54 |
1 files changed, 29 insertions, 25 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainerStatistics.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainerStatistics.java index e5404d58ab8..43a57aece64 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainerStatistics.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainerStatistics.java @@ -27,42 +27,41 @@ public class ActiveContainerStatistics { private final WeakHashMap<ActiveContainer, ActiveContainerStats> activeContainers = new WeakHashMap<>(); private final Object lock = new Object(); - ActiveContainerStatistics() {} // Make class only constructible from this package - - public void emitMetrics(Metric metric) { - synchronized (lock) { - DeactivatedContainerMetrics metrics = deactivatedContainerStream() - .collect( - DeactivatedContainerMetrics::new, - DeactivatedContainerMetrics::aggregate, - DeactivatedContainerMetrics::merge); - - metric.set(Metrics.TOTAL_DEACTIVATED_CONTAINERS, metrics.deactivatedContainerCount, null); - metric.set(Metrics.DEACTIVATED_CONTAINERS_WITH_RETAINED_REFERENCES, metrics.deactivatedContainersWithRetainedRefsCount, null); - } - } - - void onActivated(ActiveContainer activeContainer) { + public void onActivated(ActiveContainer activeContainer) { synchronized (lock) { activeContainers.put(activeContainer, new ActiveContainerStats(Instant.now())); } } - void onDeactivated(ActiveContainer activeContainer) { + public void onDeactivated(ActiveContainer activeContainer) { synchronized (lock) { ActiveContainerStats containerStats = activeContainers.get(activeContainer); if (containerStats == null) { throw new IllegalStateException("onActivated() has not been called for container: " + activeContainer); } - containerStats.timeDeactivated = Instant.now(); + containerStats.setTimeDeactived(Instant.now()); } } - void printSummaryToLog() { + public void outputMetrics(Metric metric) { synchronized (lock) { - List<DeactivatedContainer> deactivatedContainers = deactivatedContainerStream().collect(toList()); - if (deactivatedContainers.isEmpty()) return; + DeactivatedContainerMetrics metrics = deactivatedContainerStream() + .collect( + DeactivatedContainerMetrics::new, + DeactivatedContainerMetrics::aggregate, + DeactivatedContainerMetrics::merge); + + metric.set(Metrics.TOTAL_DEACTIVATED_CONTAINERS, metrics.deactivatedContainerCount, null); + metric.set(Metrics.DEACTIVATED_CONTAINERS_WITH_RETAINED_REFERENCES, metrics.deactivatedContainersWithRetainedRefsCount, null); + } + } + public void printSummaryToLog() { + synchronized (lock) { + List<DeactivatedContainer> deactivatedContainers = deactivatedContainerStream().collect(toList()); + if (deactivatedContainers.isEmpty()) { + return; + } log.warning( "Multiple instances of ActiveContainer leaked! " + deactivatedContainers.size() + " instances are still present."); @@ -75,21 +74,26 @@ public class ActiveContainerStatistics { private Stream<DeactivatedContainer> deactivatedContainerStream() { synchronized (lock) { return activeContainers.entrySet().stream() - .filter(e -> e.getValue().isDeactivated()) - .map(e -> new DeactivatedContainer(e.getKey(), e.getValue().timeActivated, e.getValue().timeDeactivated)); + .filter(e -> e.getKey() != null) + .filter(e -> !e.getValue().isDeactivated()) + .map(e -> new DeactivatedContainer(e.getKey(), e.getValue().timeActivated, e.getValue().timeDeactived)); } } private static class ActiveContainerStats { public final Instant timeActivated; - public Instant timeDeactivated; + public Instant timeDeactived; public ActiveContainerStats(Instant timeActivated) { this.timeActivated = timeActivated; } + public void setTimeDeactived(Instant instant) { + this.timeDeactived = instant; + } + public boolean isDeactivated() { - return timeDeactivated != null; + return timeDeactived == null; } } |