From c97e4d822237ad193d0fccb43276113c89443019 Mon Sep 17 00:00:00 2001 From: ddebowczyk92 Date: Tue, 11 Feb 2025 16:13:37 +0100 Subject: [PATCH] [SPARK] Use all of the underlying classloaders to find META-INF/services resources (#3483) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dominik Dębowczyk --- .../spark/agent/util/ExtensionClassloader.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/integration/spark/shared/src/main/java/io/openlineage/spark/agent/util/ExtensionClassloader.java b/integration/spark/shared/src/main/java/io/openlineage/spark/agent/util/ExtensionClassloader.java index 5221bb19ca..b1dd22df38 100644 --- a/integration/spark/shared/src/main/java/io/openlineage/spark/agent/util/ExtensionClassloader.java +++ b/integration/spark/shared/src/main/java/io/openlineage/spark/agent/util/ExtensionClassloader.java @@ -4,8 +4,14 @@ */ package io.openlineage.spark.agent.util; +import com.google.common.collect.Iterators; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; import java.util.Collection; +import java.util.Enumeration; import java.util.LinkedHashSet; +import java.util.List; import java.util.Set; import lombok.extern.slf4j.Slf4j; @@ -32,4 +38,16 @@ protected Class loadClass(String name, boolean resolve) throws ClassNotFoundE } throw new ClassNotFoundException(name); } + + @Override + public Enumeration getResources(String name) throws IOException { + List> enumerations = new ArrayList<>(); + + for (ClassLoader classLoader : classLoaders) { + enumerations.add(classLoader.getResources(name)); + } + + return Iterators.asEnumeration( + Iterators.concat(enumerations.stream().map(Iterators::forEnumeration).iterator())); + } }