From ad425b6bb297150274ec52b9071ce97e47369a0c Mon Sep 17 00:00:00 2001 From: Karsten Schnitter Date: Mon, 3 Nov 2025 11:44:20 +0100 Subject: [PATCH] Fix OTel CF resource provider Uses the simpler implementation from release-3. The service loader does not load the required provider this early in the lifecycle. The old implementation is proven in existing versions of the extension. Testing showed it to be effective with the new release. Signed-off-by: Karsten Schnitter --- .../ext/CloudFoundryResourceProvider.java | 24 +++---------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/cf-java-logging-support-opentelemetry-agent-extension/src/main/java/com/sap/hcf/cf/logging/opentelemetry/agent/ext/CloudFoundryResourceProvider.java b/cf-java-logging-support-opentelemetry-agent-extension/src/main/java/com/sap/hcf/cf/logging/opentelemetry/agent/ext/CloudFoundryResourceProvider.java index e8306bbe..a71e063d 100644 --- a/cf-java-logging-support-opentelemetry-agent-extension/src/main/java/com/sap/hcf/cf/logging/opentelemetry/agent/ext/CloudFoundryResourceProvider.java +++ b/cf-java-logging-support-opentelemetry-agent-extension/src/main/java/com/sap/hcf/cf/logging/opentelemetry/agent/ext/CloudFoundryResourceProvider.java @@ -1,37 +1,19 @@ package com.sap.hcf.cf.logging.opentelemetry.agent.ext; import com.sap.hcf.cf.logging.opentelemetry.agent.ext.attributes.CloudFoundryResourceCustomizer; +import io.opentelemetry.contrib.cloudfoundry.resources.CloudFoundryResource; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; import io.opentelemetry.sdk.resources.Resource; -import java.util.ServiceLoader; - public class CloudFoundryResourceProvider implements ResourceProvider { private final CloudFoundryResourceCustomizer customizer = new CloudFoundryResourceCustomizer(); @Override public Resource createResource(ConfigProperties configProperties) { - ResourceProvider delegate = getDelegate(); - return delegate == null - ? Resource.empty() - : customizer.apply(delegate.createResource(configProperties), configProperties); - } - - private ResourceProvider getDelegate() { - return DelegateHolder.INSTANCE; + Resource original = CloudFoundryResource.get(); + return customizer.apply(original, configProperties); } - private static class DelegateHolder { - static final ResourceProvider INSTANCE = loadCloudFoundryResourceProvider(); - - private static ResourceProvider loadCloudFoundryResourceProvider() { - ServiceLoader loader = ServiceLoader.load(ResourceProvider.class); - return loader.stream().map(ServiceLoader.Provider::get) - .filter(p -> p instanceof io.opentelemetry.contrib.cloudfoundry.resources.CloudFoundryResourceProvider) - .findAny().orElse(null); - } - - } }