diff --git a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/properties/PushRegistryPropertiesConfigAdapter.java b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/properties/PushRegistryPropertiesConfigAdapter.java index 31be97ea1de..85c98618f53 100644 --- a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/properties/PushRegistryPropertiesConfigAdapter.java +++ b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/properties/PushRegistryPropertiesConfigAdapter.java @@ -43,21 +43,18 @@ public abstract class PushRegistryPropertiesConfigAdapter createRowForChain(BundleInfo bundle, CertificateChainInfo chain) { CertificateInfo leastValidCertificate = chain.getCertificates() .stream() - .min(Comparator.comparing(CertificateInfo::getValidityEnds)) + .filter((c) -> c.getValidityEnds() != null) + .min(Comparator.comparing(this::getValidityEnds)) .orElse(null); if (leastValidCertificate == null) { return null; @@ -114,10 +116,16 @@ class SslMeterBinder implements MeterBinder { } private long getChainExpiry(CertificateInfo certificate) { - Duration valid = Duration.between(Instant.now(this.clock), certificate.getValidityEnds()); + Duration valid = Duration.between(Instant.now(this.clock), getValidityEnds(certificate)); return valid.get(ChronoUnit.SECONDS); } + private Instant getValidityEnds(CertificateInfo certificate) { + Instant validityEnds = certificate.getValidityEnds(); + Assert.state(validityEnds != null, "'validityEnds' must not be null"); + return validityEnds; + } + /** * Manages bundles and their metrics. */