From 0294e4233ccd10ea30e4e1a23371dd04e1270139 Mon Sep 17 00:00:00 2001 From: kamtohung Date: Fri, 29 Dec 2023 14:23:46 +0800 Subject: [PATCH 1/3] [ISSUE #380] fix latest dubbo version error --- .../adapter/dubbo/apache/ApacheDubboDtpAdapter.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/adapter/adapter-dubbo/src/main/java/org/dromara/dynamictp/adapter/dubbo/apache/ApacheDubboDtpAdapter.java b/adapter/adapter-dubbo/src/main/java/org/dromara/dynamictp/adapter/dubbo/apache/ApacheDubboDtpAdapter.java index 3c308b422..732e50210 100644 --- a/adapter/adapter-dubbo/src/main/java/org/dromara/dynamictp/adapter/dubbo/apache/ApacheDubboDtpAdapter.java +++ b/adapter/adapter-dubbo/src/main/java/org/dromara/dynamictp/adapter/dubbo/apache/ApacheDubboDtpAdapter.java @@ -37,10 +37,7 @@ import java.util.Map; import java.util.Objects; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.*; /** * ApacheDubboDtpAdapter related @@ -109,13 +106,13 @@ protected void initialize() { executorRepository = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension(); } - val data = (ConcurrentMap>) ReflectionUtil.getFieldValue( + val data = (ConcurrentMap>) ReflectionUtil.getFieldValue( DefaultExecutorRepository.class, "data", executorRepository); if (Objects.isNull(data)) { return; } - Map executorMap = data.get(EXECUTOR_SERVICE_COMPONENT_KEY); + Map executorMap = data.get(EXECUTOR_SERVICE_COMPONENT_KEY); if (MapUtils.isNotEmpty(executorMap)) { executorMap.forEach((k, v) -> { ThreadPoolExecutor proxy = getProxy(v); @@ -124,7 +121,6 @@ protected void initialize() { }); } } - private ThreadPoolExecutor getProxy(Executor executor) { ThreadPoolExecutor proxy; if (executor instanceof EagerThreadPoolExecutor) { From f35f6e276f77060bafa6cbcf129eb13a0722f7be Mon Sep 17 00:00:00 2001 From: kamtohung Date: Fri, 29 Dec 2023 14:24:18 +0800 Subject: [PATCH 2/3] [ISSUE #380] fix latest dubbo version error --- .../adapter/dubbo/apache/ApacheDubboDtpAdapter.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/adapter/adapter-dubbo/src/main/java/org/dromara/dynamictp/adapter/dubbo/apache/ApacheDubboDtpAdapter.java b/adapter/adapter-dubbo/src/main/java/org/dromara/dynamictp/adapter/dubbo/apache/ApacheDubboDtpAdapter.java index 732e50210..9e77c855b 100644 --- a/adapter/adapter-dubbo/src/main/java/org/dromara/dynamictp/adapter/dubbo/apache/ApacheDubboDtpAdapter.java +++ b/adapter/adapter-dubbo/src/main/java/org/dromara/dynamictp/adapter/dubbo/apache/ApacheDubboDtpAdapter.java @@ -37,7 +37,10 @@ import java.util.Map; import java.util.Objects; -import java.util.concurrent.*; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ThreadPoolExecutor; /** * ApacheDubboDtpAdapter related From 6324d1b7f0df750626accf0f068ac2be21d71871 Mon Sep 17 00:00:00 2001 From: kamtohung Date: Fri, 29 Dec 2023 14:39:58 +0800 Subject: [PATCH 3/3] [ISSUE #380] add test --- .../dubbo/ApacheDubboDtpAdapterTest.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 test/test-adapter/src/test/java/org/dromara/dynamictp/test/adapter/webserver/dubbo/ApacheDubboDtpAdapterTest.java diff --git a/test/test-adapter/src/test/java/org/dromara/dynamictp/test/adapter/webserver/dubbo/ApacheDubboDtpAdapterTest.java b/test/test-adapter/src/test/java/org/dromara/dynamictp/test/adapter/webserver/dubbo/ApacheDubboDtpAdapterTest.java new file mode 100644 index 000000000..20459b4ca --- /dev/null +++ b/test/test-adapter/src/test/java/org/dromara/dynamictp/test/adapter/webserver/dubbo/ApacheDubboDtpAdapterTest.java @@ -0,0 +1,63 @@ +/* + * 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.dromara.dynamictp.test.adapter.webserver.dubbo; + +import lombok.val; +import org.dromara.dynamictp.common.util.ReflectionUtil; +import org.junit.Test; +import org.junit.jupiter.api.Assertions; + +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * dubbo adapter test + * + * @author hongjintao + */ +public class ApacheDubboDtpAdapterTest { + + private final ConcurrentMap> newData = new ConcurrentHashMap<>(); + + private final ConcurrentMap> oldData = new ConcurrentHashMap<>(); + + @Test + @SuppressWarnings("unchecked") + public void testOldDubboConcurrentMap() { + ApacheDubboDtpAdapterTest targetObj = new ApacheDubboDtpAdapterTest(); + ConcurrentHashMap newValue = new ConcurrentHashMap<>(); + newValue.put("first-pool", Executors.newFixedThreadPool(1)); + targetObj.newData.put("name", newValue); + val newData = (ConcurrentMap>) ReflectionUtil.getFieldValue( + ApacheDubboDtpAdapterTest.class, "newData", targetObj); + assert newData != null; + Assertions.assertEquals("first-pool", newData.get("name").keySet().iterator().next()); + + ConcurrentHashMap oldValue = new ConcurrentHashMap<>(); + oldValue.put(123, Executors.newFixedThreadPool(1)); + targetObj.oldData.put("name", oldValue); + + val oldData = (ConcurrentMap>) ReflectionUtil.getFieldValue( + ApacheDubboDtpAdapterTest.class, "oldData", targetObj); + assert oldData != null; + Assertions.assertEquals(123, oldData.get("name").keySet().iterator().next()); + } + +}