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

jinrongtong pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new cb09cf0c0 [ISSUE #5236] Fix  ServiceProvider loading class  (#5237)
cb09cf0c0 is described below

commit cb09cf0c026a9bd11918c4eb165db2f887f4a584
Author: RapperCL <[email protected]>
AuthorDate: Mon Oct 3 17:25:58 2022 +0800

    [ISSUE #5236] Fix  ServiceProvider loading class  (#5237)
    
    * fix duplicate class loading
    
    * remove redundant
    
    Co-authored-by: chenyong <[email protected]>
---
 .../java/org/apache/rocketmq/common/utils/ServiceProvider.java    | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git 
a/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java 
b/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java
index 30a6b808f..49f29a89d 100644
--- a/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java
+++ b/common/src/main/java/org/apache/rocketmq/common/utils/ServiceProvider.java
@@ -105,24 +105,22 @@ public class ServiceProvider {
 
     public static <T> List<T> load(String name, Class<?> clazz) {
         LOG.info("Looking for a resource file of name [{}] ...", name);
-        List<T> services = new ArrayList<T>();
+        List<T> services = new ArrayList<>();
         try {
-            ArrayList<String> names = new ArrayList<String>();
             final InputStream is = 
getResourceAsStream(getContextClassLoader(), name);
             if (is != null) {
                 BufferedReader reader;
                 reader = new BufferedReader(new InputStreamReader(is, 
StandardCharsets.UTF_8));
                 String serviceName = reader.readLine();
+                List<String> names = new ArrayList<>();
                 while (serviceName != null && !"".equals(serviceName)) {
                     LOG.info(
                         "Creating an instance as specified by file {} which 
was present in the path of the context classloader.",
                         name);
                     if (!names.contains(serviceName)) {
                         names.add(serviceName);
+                        services.add(initService(getContextClassLoader(), 
serviceName, clazz));
                     }
-
-                    services.add((T) initService(getContextClassLoader(), 
serviceName, clazz));
-
                     serviceName = reader.readLine();
                 }
                 reader.close();

Reply via email to