Chia-Ping Tsai created KAFKA-21093:
--------------------------------------
Summary: Ensure all ConfigProviders get closed before throwing
exception
Key: KAFKA-21093
URL: https://issues.apache.org/jira/browse/KAFKA-21093
Project: Kafka
Issue Type: Bug
Reporter: Chia-Ping Tsai
Assignee: Chia-Ping Tsai
There are two paths where providers are created and configured but never
closed. We should keep the resources clean as much as possible 😊
{code:java}
    Map<String, ConfigProvider> configProviderInstances = new HashMap<>();
    for (Map.Entry<String, String> entry : providerMap.entrySet()) {
      try {
        String prefix = CONFIG_PROVIDERS_CONFIG + "." + entry.getKey()
+ CONFIG_PROVIDERS_PARAM;
        Map<String, ?> configProperties =
configProviderProperties(prefix, providerConfigProperties);
        ConfigProvider provider = Utils.newInstance(entry.getValue(),
ConfigProvider.class);
        provider.configure(configProperties);
        configProviderInstances.put(entry.getKey(), provider);
      } catch (ClassNotFoundException e) {
        log.error("Could not load config provider class {}",
entry.getValue(), e);
        throw new
ConfigException(providerClassProperty(entry.getKey()), entry.getValue(), "Could
not load config provider class or one of its dependencies");
      }
    } {code}
{code:java}
    if (!providers.isEmpty()) {       ConfigTransformer
configTransformer = new ConfigTransformer(providers); Â Â Â Â Â Â
ConfigTransformerResult result =
configTransformer.transform(indirectVariables); Â Â Â Â Â Â if
(!result.data().isEmpty()) { Â Â Â Â Â Â Â Â
resolvedOriginals.putAll(result.data()); Â Â Â Â Â Â } Â Â Â Â } Â Â Â Â
providers.values().forEach(x -> Utils.closeQuietly(x, "config provider"));
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)