From f792a8de7c43a12a565a8e5348bd4d36e9a01d4c Mon Sep 17 00:00:00 2001 From: reshmabidikar Date: Fri, 9 May 2025 10:16:53 +0530 Subject: [PATCH 1/3] #145 - Register HealthCheckRegistry --- .../java/org/killbill/billing/osgi/KillbillActivator.java | 6 ++++++ platform-api/pom.xml | 2 +- platform-test/pom.xml | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/osgi/src/main/java/org/killbill/billing/osgi/KillbillActivator.java b/osgi/src/main/java/org/killbill/billing/osgi/KillbillActivator.java index 4b9a3964a..de1ea244b 100644 --- a/osgi/src/main/java/org/killbill/billing/osgi/KillbillActivator.java +++ b/osgi/src/main/java/org/killbill/billing/osgi/KillbillActivator.java @@ -55,6 +55,7 @@ import org.killbill.billing.platform.jndi.JNDIManager; import org.killbill.billing.usage.plugin.api.UsagePluginApi; import org.killbill.clock.Clock; +import org.killbill.commons.health.api.HealthCheckRegistry; import org.killbill.commons.metrics.api.MetricRegistry; import org.osgi.framework.AllServiceListener; import org.osgi.framework.BundleActivator; @@ -95,6 +96,8 @@ public class KillbillActivator implements BundleActivator, AllServiceListener { private ServiceTracker logTracker; private OSGIAppender osgiAppender = null; + private HealthCheckRegistry healthCheckRegistry; + @Inject public KillbillActivator(@Named(DefaultOSGIModule.OSGI_DATA_SOURCE_ID) final DataSource dataSource, final OSGIKillbill osgiKillbill, @@ -105,6 +108,7 @@ public KillbillActivator(@Named(DefaultOSGIModule.OSGI_DATA_SOURCE_ID) final Dat final KillbillEventObservable observable, final OSGIConfigProperties configProperties, final MetricRegistry metricsRegistry, + final HealthCheckRegistry healthCheckRegistry, final JNDIManager jndiManager) { this.osgiKillbill = osgiKillbill; this.bundleRegistry = bundleRegistry; @@ -116,6 +120,7 @@ public KillbillActivator(@Named(DefaultOSGIModule.OSGI_DATA_SOURCE_ID) final Dat this.configProperties = configProperties; this.jndiManager = jndiManager; this.metricsRegistry = metricsRegistry; + this.healthCheckRegistry = healthCheckRegistry; this.registrar = new OSGIKillbillRegistrar(); this.allRegistrationHandlers = new LinkedList(); } @@ -209,6 +214,7 @@ public void start(final BundleContext context) throws Exception { registrar.registerService(context, OSGIConfigProperties.class, configProperties, props); registrar.registerService(context, Clock.class, clock, props); registrar.registerService(context, MetricRegistry.class, metricsRegistry, props); + registrar.registerService(context, HealthCheckRegistry.class, healthCheckRegistry, props); context.addServiceListener(this); diff --git a/platform-api/pom.xml b/platform-api/pom.xml index b3ba6fc59..37566ea2d 100644 --- a/platform-api/pom.xml +++ b/platform-api/pom.xml @@ -28,5 +28,5 @@ killbill-platform-api jar killbill-platform-api - + diff --git a/platform-test/pom.xml b/platform-test/pom.xml index 1574bd516..f83e2064a 100644 --- a/platform-test/pom.xml +++ b/platform-test/pom.xml @@ -278,8 +278,8 @@ initialize - - + + From 8cededbb5794ead775eea8034acd8ca2c16cde8d Mon Sep 17 00:00:00 2001 From: reshmabidikar Date: Fri, 9 May 2025 11:35:48 +0530 Subject: [PATCH 2/3] Fix ci error --- .../osgi/glue/TestIntegrationModule.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/platform-test/src/test/java/org/killbill/billing/beatrix/integration/osgi/glue/TestIntegrationModule.java b/platform-test/src/test/java/org/killbill/billing/beatrix/integration/osgi/glue/TestIntegrationModule.java index a241449c1..b9893f601 100644 --- a/platform-test/src/test/java/org/killbill/billing/beatrix/integration/osgi/glue/TestIntegrationModule.java +++ b/platform-test/src/test/java/org/killbill/billing/beatrix/integration/osgi/glue/TestIntegrationModule.java @@ -20,6 +20,7 @@ package org.killbill.billing.beatrix.integration.osgi.glue; import java.util.Map; +import java.util.NoSuchElementException; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -60,7 +61,9 @@ import org.killbill.billing.util.api.TagUserApi; import org.killbill.clock.Clock; import org.killbill.clock.ClockMock; +import org.killbill.commons.health.api.HealthCheck; import org.killbill.commons.health.api.HealthCheckRegistry; +import org.killbill.commons.health.api.Result; import org.killbill.commons.metrics.api.MetricRegistry; import org.killbill.commons.metrics.impl.NoOpMetricRegistry; @@ -78,7 +81,7 @@ protected void configure() { install(new TestPlatformModuleWithEmbeddedDB(configSource, true, (TestKillbillConfigSource) configSource)); bind(MetricRegistry.class).to(NoOpMetricRegistry.class); - bind(HealthCheckRegistry.class).toProvider(Providers.of(null)); + bind(HealthCheckRegistry.class).to(TestHealthCheckRegistry.class); bind(Clock.class).to(ClockMock.class); // Make sure we have a unique clock if one requests ClockMock explicitly bind(ClockMock.class).asEagerSingleton(); @@ -195,4 +198,22 @@ public T getService() { return this.pluginsByName.values().stream().findFirst().orElse(null); } } + + static final class TestHealthCheckRegistry implements HealthCheckRegistry { + + @Override + public Set getNames() { + return null; + } + + @Override + public Result runHealthCheck(final String name) throws NoSuchElementException { + return null; + } + + @Override + public void register(final String name, final HealthCheck healthCheck) { + + } + } } From 92e334d1e22f5b0bcb4140df2cbf79780d76ca10 Mon Sep 17 00:00:00 2001 From: reshmabidikar Date: Tue, 3 Jun 2025 09:31:00 +0530 Subject: [PATCH 3/3] Make HealthCheckRegistry available in KillbillActivatorBase --- .../billing/osgi/libs/killbill/KillbillActivatorBase.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osgi-bundles/libs/killbill/src/main/java/org/killbill/billing/osgi/libs/killbill/KillbillActivatorBase.java b/osgi-bundles/libs/killbill/src/main/java/org/killbill/billing/osgi/libs/killbill/KillbillActivatorBase.java index 51a5e3927..d2cdf8e0c 100644 --- a/osgi-bundles/libs/killbill/src/main/java/org/killbill/billing/osgi/libs/killbill/KillbillActivatorBase.java +++ b/osgi-bundles/libs/killbill/src/main/java/org/killbill/billing/osgi/libs/killbill/KillbillActivatorBase.java @@ -28,6 +28,7 @@ import org.killbill.billing.osgi.api.OSGIKillbillRegistrar; import org.killbill.billing.osgi.api.config.PluginConfig; import org.killbill.billing.osgi.api.config.PluginConfigServiceApi; +import org.killbill.commons.health.api.HealthCheckRegistry; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.slf4j.Logger; @@ -55,6 +56,8 @@ public abstract class KillbillActivatorBase implements BundleActivator { protected OSGIConfigPropertiesService configProperties; protected OSGIMetricRegistry metricRegistry; + protected HealthCheckRegistry healthCheckRegistry; + protected File tmpDir = null; private ScheduledFuture restartFuture = null; @@ -73,6 +76,7 @@ public void start(final BundleContext context) throws Exception { configProperties = new OSGIConfigPropertiesService(context); clock = new OSGIKillbillClock(context); metricRegistry = new OSGIMetricRegistry(context); + healthCheckRegistry = context.getServiceReference(HealthCheckRegistry.class) != null ? context.getService(context.getServiceReference(HealthCheckRegistry.class)) : null; // Registrar for bundle registrar = new OSGIKillbillRegistrar();