summaryrefslogtreecommitdiffstats
path: root/jdisc_core
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-05-29 15:43:06 +0200
committerBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-05-29 16:30:53 +0200
commit606acc8e051d983698099f9ec1bcbfcde10a2690 (patch)
treef6284e0456c3c4d8554d6122ec075a6f5f195353 /jdisc_core
parent41a1db5c510ff536caa3740a0f6df9acf8e0cbef (diff)
Use ActiveContainerStatistics
Track ActiveContainer instances through ApplicationLoader. Output ActiveContainer statistics through MetricUpdater.
Diffstat (limited to 'jdisc_core')
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationEnvironmentModule.java1
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationLoader.java24
2 files changed, 20 insertions, 5 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationEnvironmentModule.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationEnvironmentModule.java
index c6d6efd0ee9..d080e97ec3b 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationEnvironmentModule.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationEnvironmentModule.java
@@ -28,6 +28,7 @@ class ApplicationEnvironmentModule extends AbstractModule {
bind(CurrentContainer.class).toInstance(loader);
bind(OsgiFramework.class).toInstance(loader.osgiFramework());
bind(ThreadFactory.class).to(ContainerThread.Factory.class);
+ bind(ActiveContainerStatistics.class).toInstance(loader.getActiveContainerStatistics());
}
@Provides
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationLoader.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationLoader.java
index 2dd7f7eb879..abc133f2d4e 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationLoader.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationLoader.java
@@ -5,7 +5,14 @@ import com.google.inject.AbstractModule;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.yahoo.jdisc.AbstractResource;
-import com.yahoo.jdisc.application.*;
+import com.yahoo.jdisc.application.Application;
+import com.yahoo.jdisc.application.ApplicationNotReadyException;
+import com.yahoo.jdisc.application.ContainerActivator;
+import com.yahoo.jdisc.application.ContainerBuilder;
+import com.yahoo.jdisc.application.DeactivatedContainer;
+import com.yahoo.jdisc.application.GuiceRepository;
+import com.yahoo.jdisc.application.OsgiFramework;
+import com.yahoo.jdisc.application.OsgiHeader;
import com.yahoo.jdisc.service.ContainerNotReadyException;
import com.yahoo.jdisc.service.CurrentContainer;
import org.osgi.framework.Bundle;
@@ -28,11 +35,13 @@ import java.util.logging.Logger;
public class ApplicationLoader implements BootstrapLoader, ContainerActivator, CurrentContainer {
private static final Logger log = Logger.getLogger(ApplicationLoader.class.getName());
+
private final OsgiFramework osgiFramework;
private final GuiceRepository guiceModules = new GuiceRepository();
private final AtomicReference<ActiveContainer> containerRef = new AtomicReference<>();
private final Object appLock = new Object();
private final List<Bundle> appBundles = new ArrayList<>();
+ private final ActiveContainerStatistics statistics = new ActiveContainerStatistics();
private Application application;
private ApplicationInUseTracker applicationInUseTracker;
@@ -62,9 +71,11 @@ public class ApplicationLoader implements BootstrapLoader, ContainerActivator, C
}
prev = containerRef.getAndSet(next);
+ statistics.onActivated(next);
if (prev == null) {
return null;
}
+ statistics.onDeactivated(prev);
}
prev.release();
DeactivatedContainer deactivatedContainer = prev.shutdown();
@@ -82,11 +93,9 @@ public class ApplicationLoader implements BootstrapLoader, ContainerActivator, C
Thread.sleep(TimeUnit.MILLISECONDS.convert(currentWaitTimeSeconds, TimeUnit.SECONDS))
);
+ statistics.printSummaryToLog();
final ActiveContainer prevContainer = prevContainerReference.get();
- if (prevContainer == null) {
- return;
- }
- if (prevContainer.retainCount() == 0) {
+ if (prevContainer == null || prevContainer.retainCount() == 0) {
return;
}
log.warning("Previous container not terminated in the last " + totalTimeWaited + " seconds."
@@ -231,6 +240,10 @@ public class ApplicationLoader implements BootstrapLoader, ContainerActivator, C
}
}
+ public ActiveContainerStatistics getActiveContainerStatistics() {
+ return statistics;
+ }
+
public OsgiFramework osgiFramework() {
return osgiFramework;
}
@@ -258,4 +271,5 @@ public class ApplicationLoader implements BootstrapLoader, ContainerActivator, C
}
}
}
+
}