diff --git a/pom.xml b/pom.xml
index 767a05789..f64c18f08 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
2.1.0
2.1.13
2.1.0
- 11.1.13
+ 11.1.62
${project.version}
21
21
diff --git a/src/main/java/com/uid2/operator/Main.java b/src/main/java/com/uid2/operator/Main.java
index 9fb10d1b8..c4fe54c7e 100644
--- a/src/main/java/com/uid2/operator/Main.java
+++ b/src/main/java/com/uid2/operator/Main.java
@@ -36,6 +36,7 @@
import com.uid2.shared.health.PodTerminationMonitor;
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.Meter;
+import io.micrometer.core.instrument.Timer;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Metrics;
import io.micrometer.core.instrument.config.MeterFilter;
@@ -68,6 +69,7 @@
public class Main {
private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);
+ private static volatile Instant startupBeginTime;
private final JsonObject config;
private final Vertx vertx;
private final ApplicationVersion appVersion;
@@ -244,7 +246,15 @@ private KeyManager getKeyManager() {
return new KeyManager(this.keysetKeyStore, this.keysetProvider);
}
+ public static void recordStartupComplete() {
+ if (startupBeginTime == null) return;
+ final Duration d = Duration.between(startupBeginTime, Instant.now());
+ Timer.builder("uid2_operator_startup_duration").register(globalRegistry).record(d);
+ LOGGER.info("Startup in {} ms", d.toMillis());
+ }
+
public static void main(String[] args) throws Exception {
+ startupBeginTime = Instant.now();
java.security.Security.setProperty("networkaddress.cache.ttl" , "60");
diff --git a/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java b/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java
index 8a57d2370..cbaf48a24 100644
--- a/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java
+++ b/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java
@@ -3,6 +3,7 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.uid2.operator.Const;
+import com.uid2.operator.Main;
import com.uid2.operator.model.*;
import com.uid2.operator.model.IdentityScope;
import com.uid2.operator.monitoring.IStatsCollectorQueue;
@@ -219,6 +220,8 @@ public void start(Promise startPromise) throws Exception {
.listen(port, result -> {
if (result.succeeded()) {
this.healthComponent.setHealthStatus(true);
+ // Record startup completion now that HTTP server is ready
+ Main.recordStartupComplete();
startPromise.complete();
} else {
this.healthComponent.setHealthStatus(false, result.cause().getMessage());