summaryrefslogtreecommitdiffstats
path: root/jdisc_core
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-05-30 17:12:22 +0200
committerBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-05-30 17:12:22 +0200
commitd0f53d3a20495b595c3b2f6684be0fae5f9e1f20 (patch)
tree148b6fceebb9117668ffa43c908b722665ee7127 /jdisc_core
parenta6611e973c7c101e74c4dc39165c837eeaf436cb (diff)
Revert "Misc fixes to ActiveContainerStatistics"
This reverts commit 70e8ea955b7a349408c92fd6b8aeeddcccc8df59.
Diffstat (limited to 'jdisc_core')
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainerStatistics.java54
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;
}
}