This is an automated email from the ASF dual-hosted git repository.

apolovtsev pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new aa093c18034 IGNITE-28009 Remove redundant ServiceLoaderModulesProvider 
(#7681)
aa093c18034 is described below

commit aa093c180341325bbd513ce7e7b12ffd1256ca26
Author: Ivan Zlenko <[email protected]>
AuthorDate: Fri Feb 27 14:58:28 2026 +0500

    IGNITE-28009 Remove redundant ServiceLoaderModulesProvider (#7681)
---
 .../config/Ignite3ConfigurationUtils.java          | 22 +---------
 .../configuration/generator/DefaultsGenerator.java | 19 +-------
 .../org/apache/ignite/internal/app/IgniteImpl.java | 16 +------
 .../configuration/ConfigurationModules.java        | 22 ++++++++++
 .../ServiceLoaderModulesProvider.java              | 46 -------------------
 .../configuration/ConfigurationModulesTest.java    | 22 ++++++++++
 .../ServiceLoaderModulesProviderTest.java          | 51 ----------------------
 .../ConfigurationCompatibilityTest.java            | 35 +++++----------
 .../ignite/internal/BaseIgniteRestartTest.java     | 16 +------
 9 files changed, 59 insertions(+), 190 deletions(-)

diff --git 
a/migration-tools/modules/migration-tools-commons/src/main/java/org/apache/ignite/migrationtools/config/Ignite3ConfigurationUtils.java
 
b/migration-tools/modules/migration-tools-commons/src/main/java/org/apache/ignite/migrationtools/config/Ignite3ConfigurationUtils.java
index 3044478c19b..b3335174700 100644
--- 
a/migration-tools/modules/migration-tools-commons/src/main/java/org/apache/ignite/migrationtools/config/Ignite3ConfigurationUtils.java
+++ 
b/migration-tools/modules/migration-tools-commons/src/main/java/org/apache/ignite/migrationtools/config/Ignite3ConfigurationUtils.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.migrationtools.config;
 
 import java.nio.file.Path;
-import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.reflect.FieldUtils;
@@ -31,7 +30,6 @@ import org.apache.ignite3.configuration.validation.Validator;
 import org.apache.ignite3.internal.configuration.ConfigurationModules;
 import org.apache.ignite3.internal.configuration.ConfigurationRegistry;
 import org.apache.ignite3.internal.configuration.ConfigurationTreeGenerator;
-import org.apache.ignite3.internal.configuration.ServiceLoaderModulesProvider;
 import 
org.apache.ignite3.internal.configuration.storage.LocalFileConfigurationStorage;
 import 
org.apache.ignite3.internal.configuration.validation.ConfigurationValidator;
 import 
org.apache.ignite3.internal.configuration.validation.ConfigurationValidatorImpl;
@@ -67,7 +65,7 @@ public class Ignite3ConfigurationUtils {
      * @param includeDefaults Include defaults.
      */
     public static ConfigurationRegistry loadNodeConfiguration(Path cfgPath, 
boolean includeDefaults) {
-        return loadConfigurations(cfgPath, loadConfigurationModules().local(), 
includeDefaults);
+        return loadConfigurations(cfgPath, 
ConfigurationModules.create(null).local(), includeDefaults);
     }
 
     /**
@@ -79,7 +77,7 @@ public class Ignite3ConfigurationUtils {
     public static ConfigurationRegistry loadClusterConfiguration(Path cfgPath, 
boolean includeDefaults) {
         // Hack so that it passes the validation
         // TODO: This is another hack that needs to be cleaned. We don't 
really need the ConfigurationRegistry.
-        var distributedModule = loadConfigurationModules().distributed();
+        var distributedModule = 
ConfigurationModules.create(null).distributed();
         for (RootKey<?, ?, ?> key : distributedModule.rootKeys()) {
             try {
                 FieldUtils.writeDeclaredField(key, "storageType", 
ConfigurationType.LOCAL, true);
@@ -122,20 +120,4 @@ public class Ignite3ConfigurationUtils {
         nodeConfigRegistry.startAsync(new ComponentContext()).join();
         return nodeConfigRegistry;
     }
-
-    /**
-     * Loads all the configuration modules in the main classloader.
-     */
-    private static ConfigurationModules loadConfigurationModules() {
-        // TODO: Copied
-        var modulesProvider = new ServiceLoaderModulesProvider();
-        List<ConfigurationModule> modules = modulesProvider.modules(null);
-
-        if (modules.isEmpty()) {
-            throw new IllegalStateException("No configuration modules were 
loaded, this means Ignite cannot start. "
-                    + "Please make sure that the classloader for loading 
services is correct.");
-        }
-
-        return new ConfigurationModules(modules);
-    }
 }
diff --git 
a/modules/runner/src/defaultsGenerator/java/org/apache/ignite/internal/configuration/generator/DefaultsGenerator.java
 
b/modules/runner/src/defaultsGenerator/java/org/apache/ignite/internal/configuration/generator/DefaultsGenerator.java
index 332e5575254..b3de927cc96 100644
--- 
a/modules/runner/src/defaultsGenerator/java/org/apache/ignite/internal/configuration/generator/DefaultsGenerator.java
+++ 
b/modules/runner/src/defaultsGenerator/java/org/apache/ignite/internal/configuration/generator/DefaultsGenerator.java
@@ -21,9 +21,7 @@ import static 
org.apache.ignite.internal.util.CompletableFutures.nullCompletedFu
 
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.List;
 import java.util.concurrent.TimeUnit;
-import org.apache.ignite.configuration.ConfigurationModule;
 import org.apache.ignite.configuration.KeyIgnorer;
 import org.apache.ignite.configuration.RootKey;
 import org.apache.ignite.configuration.annotation.ConfigurationType;
@@ -31,13 +29,11 @@ import 
org.apache.ignite.internal.configuration.ConfigurationChanger;
 import 
org.apache.ignite.internal.configuration.ConfigurationChanger.ConfigurationUpdateListener;
 import org.apache.ignite.internal.configuration.ConfigurationModules;
 import org.apache.ignite.internal.configuration.ConfigurationTreeGenerator;
-import org.apache.ignite.internal.configuration.ServiceLoaderModulesProvider;
 import org.apache.ignite.internal.configuration.storage.ConfigurationStorage;
 import 
org.apache.ignite.internal.configuration.storage.LocalFileConfigurationStorage;
 import org.apache.ignite.internal.configuration.tree.InnerNode;
 import 
org.apache.ignite.internal.configuration.validation.ConfigurationValidator;
 import 
org.apache.ignite.internal.configuration.validation.ConfigurationValidatorImpl;
-import org.jetbrains.annotations.Nullable;
 
 /**
  * A generator of the default local configuration file.
@@ -79,8 +75,7 @@ public class DefaultsGenerator {
      * This uses fragments of cluster initialization from {@code IgniteImpl} 
class to set up local configuration framework.
      */
     private static ConfigurationChanger createConfigurationChanger(Path 
configPath) {
-
-        ConfigurationModules modules = 
loadConfigurationModules(DefaultsGenerator.class.getClassLoader());
+        ConfigurationModules modules = 
ConfigurationModules.create(DefaultsGenerator.class.getClassLoader());
 
         ConfigurationTreeGenerator localConfigurationGenerator = new 
ConfigurationTreeGenerator(
                 modules.local().rootKeys(),
@@ -110,16 +105,4 @@ public class DefaultsGenerator {
             }
         };
     }
-
-    private static ConfigurationModules loadConfigurationModules(@Nullable 
ClassLoader classLoader) {
-        var modulesProvider = new ServiceLoaderModulesProvider();
-        List<ConfigurationModule> modules = 
modulesProvider.modules(classLoader);
-
-        if (modules.isEmpty()) {
-            throw new IllegalStateException("No configuration modules were 
loaded. "
-                    + "Please make sure that the classloader for loading 
services is correct.");
-        }
-
-        return new ConfigurationModules(modules);
-    }
 }
diff --git 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
index eaa1c794cac..05f981603ae 100644
--- 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
+++ 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
@@ -65,7 +65,6 @@ import 
org.apache.ignite.client.handler.configuration.ClientConnectorConfigurati
 import 
org.apache.ignite.client.handler.configuration.ClientConnectorExtensionConfiguration;
 import org.apache.ignite.compute.IgniteCompute;
 import org.apache.ignite.configuration.ConfigurationDynamicDefaultsPatcher;
-import org.apache.ignite.configuration.ConfigurationModule;
 import org.apache.ignite.configuration.KeyIgnorer;
 import org.apache.ignite.internal.catalog.CatalogManager;
 import org.apache.ignite.internal.catalog.CatalogManagerImpl;
@@ -110,7 +109,6 @@ import 
org.apache.ignite.internal.configuration.ConfigurationRegistry;
 import org.apache.ignite.internal.configuration.ConfigurationTreeGenerator;
 import org.apache.ignite.internal.configuration.JdbcPortProviderImpl;
 import org.apache.ignite.internal.configuration.RaftGroupOptionsConfigHelper;
-import org.apache.ignite.internal.configuration.ServiceLoaderModulesProvider;
 import 
org.apache.ignite.internal.configuration.SuggestionsClusterExtensionConfiguration;
 import org.apache.ignite.internal.configuration.SuggestionsConfiguration;
 import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
@@ -563,7 +561,7 @@ public class IgniteImpl implements Ignite {
 
         nodeProperties = new NodePropertiesImpl(vaultMgr);
 
-        ConfigurationModules modules = 
loadConfigurationModules(serviceProviderClassLoader);
+        ConfigurationModules modules = 
ConfigurationModules.create(serviceProviderClassLoader);
 
         ConfigurationTreeGenerator localConfigurationGenerator = new 
ConfigurationTreeGenerator(
                 modules.local().rootKeys(),
@@ -1482,18 +1480,6 @@ public class IgniteImpl implements Ignite {
         return serializationRegistry;
     }
 
-    private static ConfigurationModules loadConfigurationModules(@Nullable 
ClassLoader classLoader) {
-        var modulesProvider = new ServiceLoaderModulesProvider();
-        List<ConfigurationModule> modules = 
modulesProvider.modules(classLoader);
-
-        if (modules.isEmpty()) {
-            throw new IllegalStateException("No configuration modules were 
loaded, this means Ignite cannot start. "
-                    + "Please make sure that the classloader for loading 
services is correct.");
-        }
-
-        return new ConfigurationModules(modules);
-    }
-
     /**
      * Starts ignite node.
      *
diff --git 
a/modules/runner/src/main/java/org/apache/ignite/internal/configuration/ConfigurationModules.java
 
b/modules/runner/src/main/java/org/apache/ignite/internal/configuration/ConfigurationModules.java
index 509dd4ae1d2..9b1132b8aac 100644
--- 
a/modules/runner/src/main/java/org/apache/ignite/internal/configuration/ConfigurationModules.java
+++ 
b/modules/runner/src/main/java/org/apache/ignite/internal/configuration/ConfigurationModules.java
@@ -21,8 +21,11 @@ import static java.util.stream.Collectors.toUnmodifiableList;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.ServiceLoader;
+import java.util.ServiceLoader.Provider;
 import org.apache.ignite.configuration.ConfigurationModule;
 import org.apache.ignite.configuration.annotation.ConfigurationType;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * An ensemble of {@link ConfigurationModule}s used to easily pick node-local 
and cluster-wide configuration
@@ -66,4 +69,23 @@ public class ConfigurationModules {
                 .collect(toUnmodifiableList());
         return new CompoundModule(type, modulesOfGivenType);
     }
+
+    /**
+     * Creates instance of the {@link ConfigurationModules} using provided 
{@link ClassLoader}.
+     *
+     * @param classLoader the class loader to use.
+     * @return Configuration modules.
+     */
+    public static ConfigurationModules create(@Nullable ClassLoader 
classLoader) {
+        List<ConfigurationModule> modules = 
ServiceLoader.load(ConfigurationModule.class, classLoader).stream()
+                .map(Provider::get)
+                .collect(toUnmodifiableList());
+
+        if (modules.isEmpty()) {
+            throw new IllegalStateException("No configuration modules were 
loaded. "
+                    + "Please make sure that the classloader for loading 
services is correct.");
+        }
+
+        return new ConfigurationModules(modules);
+    }
 }
diff --git 
a/modules/runner/src/main/java/org/apache/ignite/internal/configuration/ServiceLoaderModulesProvider.java
 
b/modules/runner/src/main/java/org/apache/ignite/internal/configuration/ServiceLoaderModulesProvider.java
deleted file mode 100644
index 0ae104532b3..00000000000
--- 
a/modules/runner/src/main/java/org/apache/ignite/internal/configuration/ServiceLoaderModulesProvider.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.configuration;
-
-import static java.util.stream.Collectors.toUnmodifiableList;
-
-import java.util.List;
-import java.util.ServiceLoader;
-import java.util.ServiceLoader.Provider;
-import org.apache.ignite.configuration.ConfigurationModule;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Provides {@link ConfigurationModule}s using {@link ServiceLoader} mechanism.
- * Uses {@link ConfigurationModule} interface to query the ServiceLoader.
- *
- * @see ConfigurationModule
- */
-public class ServiceLoaderModulesProvider {
-    /**
-     * Loads modules using {@link ServiceLoader} mechanism.
-     *
-     * @param classLoader the class loader to use
-     * @return modules
-     */
-    public List<ConfigurationModule> modules(@Nullable ClassLoader 
classLoader) {
-        return ServiceLoader.load(ConfigurationModule.class, 
classLoader).stream()
-                .map(Provider::get)
-                .collect(toUnmodifiableList());
-    }
-}
diff --git 
a/modules/runner/src/test/java/org/apache/ignite/internal/configuration/ConfigurationModulesTest.java
 
b/modules/runner/src/test/java/org/apache/ignite/internal/configuration/ConfigurationModulesTest.java
index 2603db94c0e..43a3467d139 100644
--- 
a/modules/runner/src/test/java/org/apache/ignite/internal/configuration/ConfigurationModulesTest.java
+++ 
b/modules/runner/src/test/java/org/apache/ignite/internal/configuration/ConfigurationModulesTest.java
@@ -21,15 +21,21 @@ import static 
org.apache.ignite.configuration.annotation.ConfigurationType.DISTR
 import static 
org.apache.ignite.configuration.annotation.ConfigurationType.LOCAL;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.hamcrest.Matchers.is;
 import static org.mockito.Mockito.when;
 
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Stream;
 import org.apache.ignite.configuration.ConfigurationModule;
 import org.apache.ignite.configuration.RootKey;
 import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
@@ -80,4 +86,20 @@ class ConfigurationModulesTest extends 
BaseIgniteAbstractTest {
 
         assertThat(modules.distributed().rootKeys(), 
containsInAnyOrder(rootKeyC, rootKeyD));
     }
+
+    @ParameterizedTest
+    @MethodSource("classLoaderSource")
+    void createdUsingClassLoader(ClassLoader classLoader) {
+        ConfigurationModules modules = 
ConfigurationModules.create(classLoader);
+
+        assertThat(modules.local().schemaExtensions().size(), 
is(greaterThan(0)));
+        assertThat(modules.distributed().schemaExtensions().size(), 
is(greaterThan(0)));
+    }
+
+    private static Stream<Arguments> classLoaderSource() {
+        return Stream.of(
+                Arguments.of((ClassLoader) null),
+                Arguments.of(ConfigurationModulesTest.class.getClassLoader())
+        );
+    }
 }
diff --git 
a/modules/runner/src/test/java/org/apache/ignite/internal/configuration/ServiceLoaderModulesProviderTest.java
 
b/modules/runner/src/test/java/org/apache/ignite/internal/configuration/ServiceLoaderModulesProviderTest.java
deleted file mode 100644
index 967cb7b1f4a..00000000000
--- 
a/modules/runner/src/test/java/org/apache/ignite/internal/configuration/ServiceLoaderModulesProviderTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.configuration;
-
-import static java.util.stream.Collectors.toList;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.hasSize;
-
-import java.util.List;
-import org.apache.ignite.configuration.ConfigurationModule;
-import org.junit.jupiter.api.Test;
-
-/**
- * Tests for {@link ServiceLoaderModulesProvider}.
- */
-class ServiceLoaderModulesProviderTest {
-    private final ServiceLoaderModulesProvider provider = new 
ServiceLoaderModulesProvider();
-
-    @Test
-    void loadsModulesDefinedAsServicesInMetaInf() {
-        List<ConfigurationModule> testModules = 
provider.modules(getClass().getClassLoader()).stream()
-                .filter(module -> 
module.getClass().equals(TestConfigurationModule.class))
-                .collect(toList());
-
-        assertThat(testModules, hasSize(1));
-    }
-
-    @Test
-    void loadsModulesWhenClassLoaderIsNull() {
-        List<ConfigurationModule> testModules = provider.modules(null).stream()
-                .filter(module -> 
module.getClass().equals(TestConfigurationModule.class))
-                .collect(toList());
-
-        assertThat(testModules, hasSize(1));
-    }
-}
diff --git 
a/modules/runner/src/test/java/org/apache/ignite/internal/configuration/compatibility/ConfigurationCompatibilityTest.java
 
b/modules/runner/src/test/java/org/apache/ignite/internal/configuration/compatibility/ConfigurationCompatibilityTest.java
index d6b78c30cb1..19a3d698304 100644
--- 
a/modules/runner/src/test/java/org/apache/ignite/internal/configuration/compatibility/ConfigurationCompatibilityTest.java
+++ 
b/modules/runner/src/test/java/org/apache/ignite/internal/configuration/compatibility/ConfigurationCompatibilityTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.configuration.compatibility;
 
+import static java.util.stream.Collectors.toUnmodifiableSet;
 import static 
org.apache.ignite.internal.configuration.compatibility.framework.ConfigurationSnapshotManager.loadSnapshotFromResource;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -28,15 +29,15 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Enumeration;
-import java.util.HashSet;
 import java.util.List;
+import java.util.ServiceLoader;
+import java.util.ServiceLoader.Provider;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import org.apache.ignite.configuration.ConfigurationModule;
 import org.apache.ignite.configuration.RootKey;
 import org.apache.ignite.internal.configuration.ConfigurationModules;
-import org.apache.ignite.internal.configuration.ServiceLoaderModulesProvider;
 import 
org.apache.ignite.internal.configuration.compatibility.framework.ConfigNode;
 import 
org.apache.ignite.internal.configuration.compatibility.framework.ConfigNodeSerializer;
 import 
org.apache.ignite.internal.configuration.compatibility.framework.ConfigurationSnapshotManager;
@@ -47,7 +48,6 @@ import 
org.apache.ignite.internal.configuration.compatibility.framework.Configur
 import org.apache.ignite.internal.testframework.IgniteAbstractTest;
 import org.apache.ignite.internal.util.io.IgniteUnsafeDataInput;
 import org.apache.ignite.internal.util.io.IgniteUnsafeDataOutput;
-import org.jetbrains.annotations.Nullable;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
@@ -108,7 +108,12 @@ public class ConfigurationCompatibilityTest extends 
IgniteAbstractTest {
     @MethodSource("getSnapshots")
     void testConfigurationCompatibility(String fileName) throws IOException {
         List<ConfigNode> currentMetadata = loadCurrentConfiguration();
-        Set<ConfigurationModule> allModules = allModules();
+
+        ClassLoader classLoader = 
ConfigurationCompatibilityTest.class.getClassLoader();
+        Set<ConfigurationModule> allModules = 
ServiceLoader.load(ConfigurationModule.class, classLoader).stream()
+                .map(Provider::get)
+                .collect(toUnmodifiableSet());
+
         List<ConfigNode> snapshotMetadata = 
loadSnapshotFromResource(SNAPSHOTS_RESOURCE_LOCATION + fileName);
 
         ComparisonContext ctx = ComparisonContext.create(allModules);
@@ -116,15 +121,8 @@ public class ConfigurationCompatibilityTest extends 
IgniteAbstractTest {
         ConfigurationTreeComparator.ensureCompatible(snapshotMetadata, 
currentMetadata, ctx);
     }
 
-    private static Set<ConfigurationModule> allModules() {
-        var modulesProvider = new ServiceLoaderModulesProvider();
-        List<ConfigurationModule> modules = 
modulesProvider.modules(ConfigurationCompatibilityTest.class.getClassLoader());
-
-        return new HashSet<>(modules);
-    }
-
     static List<ConfigNode> loadCurrentConfiguration() {
-        ConfigurationModules modules = 
loadConfigurationModules(ConfigurationCompatibilityTest.class.getClassLoader());
+        ConfigurationModules modules = 
ConfigurationModules.create(ConfigurationCompatibilityTest.class.getClassLoader());
 
         ConfigurationModule local = modules.local();
         ConfigurationModule distributed = modules.distributed();
@@ -147,19 +145,6 @@ public class ConfigurationCompatibilityTest extends 
IgniteAbstractTest {
         return root;
     }
 
-    /** Load configuration modules from classpath. */
-    private static ConfigurationModules loadConfigurationModules(@Nullable 
ClassLoader classLoader) {
-        var modulesProvider = new ServiceLoaderModulesProvider();
-        List<ConfigurationModule> modules = 
modulesProvider.modules(classLoader);
-
-        if (modules.isEmpty()) {
-            throw new IllegalStateException("No configuration modules were 
loaded, this means Ignite cannot start. "
-                    + "Please make sure that the classloader for loading 
services is correct.");
-        }
-
-        return new ConfigurationModules(modules);
-    }
-
     /**
      * List directory contents for a resource folder. Not recursive. Works for 
regular files and also JARs.
      */
diff --git 
a/modules/runner/src/testFixtures/java/org/apache/ignite/internal/BaseIgniteRestartTest.java
 
b/modules/runner/src/testFixtures/java/org/apache/ignite/internal/BaseIgniteRestartTest.java
index b7b38ad0b80..6d1e128b3d0 100644
--- 
a/modules/runner/src/testFixtures/java/org/apache/ignite/internal/BaseIgniteRestartTest.java
+++ 
b/modules/runner/src/testFixtures/java/org/apache/ignite/internal/BaseIgniteRestartTest.java
@@ -45,7 +45,6 @@ import java.util.stream.IntStream;
 import java.util.stream.Stream;
 import org.apache.ignite.IgniteServer;
 import org.apache.ignite.InitParameters;
-import org.apache.ignite.configuration.ConfigurationModule;
 import org.apache.ignite.internal.app.IgniteImpl;
 import org.apache.ignite.internal.close.ManuallyCloseable;
 import 
org.apache.ignite.internal.cluster.management.ClusterManagementGroupManager;
@@ -55,7 +54,6 @@ import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImp
 import org.apache.ignite.internal.configuration.ConfigurationModules;
 import org.apache.ignite.internal.configuration.ConfigurationRegistry;
 import org.apache.ignite.internal.configuration.ConfigurationTreeGenerator;
-import org.apache.ignite.internal.configuration.ServiceLoaderModulesProvider;
 import 
org.apache.ignite.internal.configuration.storage.DistributedConfigurationStorage;
 import org.apache.ignite.internal.hlc.HybridClock;
 import org.apache.ignite.internal.lang.IgniteInternalException;
@@ -234,19 +232,7 @@ public abstract class BaseIgniteRestartTest extends 
IgniteAbstractTest {
      * @return Configuration modules.
      */
     public static ConfigurationModules loadConfigurationModules(IgniteLogger 
log, ClassLoader classLoader) {
-        var modulesProvider = new ServiceLoaderModulesProvider();
-        List<ConfigurationModule> modules = 
modulesProvider.modules(classLoader);
-
-        if (log.isInfoEnabled()) {
-            log.info("Configuration modules loaded: {}", modules);
-        }
-
-        if (modules.isEmpty()) {
-            throw new IllegalStateException("No configuration modules were 
loaded, this means Ignite cannot start. "
-                    + "Please make sure that the classloader for loading 
services is correct.");
-        }
-
-        var configModules = new ConfigurationModules(modules);
+        ConfigurationModules configModules = 
ConfigurationModules.create(classLoader);
 
         if (log.isInfoEnabled()) {
             log.info("Local root keys: {}", configModules.local().rootKeys());

Reply via email to