Skip to content

Commit

Permalink
Merge pull request #371 from dromara/dev
Browse files Browse the repository at this point in the history
fix alibaba dubbo initialize incorrectly
  • Loading branch information
yanhom1314 committed Dec 14, 2023
2 parents 05027d3 + d4621ef commit 04ef19e
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 20 deletions.
18 changes: 9 additions & 9 deletions .github/workflows/build-jvmti.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ jobs:
linux:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v2
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'adopt'
- name: Build with Maven
run: |
cd ${{ github.workspace }}/jvmti/jvmti-build
mvn package
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v3
with:
name: lib
path: jvmti/jvmti-build/target/classes/lib*
Expand All @@ -25,17 +25,17 @@ jobs:
mac:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v2
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'adopt'
- name: Build with Maven
run: |
cd ${{ github.workspace }}/jvmti/jvmti-build
mvn package
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v3
with:
name: lib
path: jvmti/jvmti-build/target/classes/lib*
Expand All @@ -44,17 +44,17 @@ jobs:
windows:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v2
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'adopt'
- name: Build with Maven
run: |
cd ${{ github.workspace }}/jvmti/jvmti-build
mvn package
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v3
with:
name: lib
path: jvmti/jvmti-build/target/classes/*.dll
Expand Down
5 changes: 5 additions & 0 deletions adapter/adapter-dubbo/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@
<artifactId>dynamic-tp-adapter-common</artifactId>
</dependency>

<dependency>
<groupId>org.dromara.dynamictp</groupId>
<artifactId>dynamic-tp-jvmti-runtime</artifactId>
</dependency>

<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@

import com.alibaba.dubbo.common.extension.ExtensionLoader;
import com.alibaba.dubbo.common.store.DataStore;
import com.alibaba.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;
import lombok.val;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.core.support.ThreadPoolExecutorProxy;
import org.dromara.dynamictp.jvmti.JVMTI;
import org.springframework.beans.factory.InitializingBean;

import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
Expand All @@ -46,6 +46,8 @@ public class AlibabaDubboDtpAdapter extends AbstractDtpAdapter implements Initia

private static final String TP_PREFIX = "dubboTp";

private static final String EXECUTOR_FIELD = "executor";

private final AtomicBoolean registered = new AtomicBoolean(false);

@Override
Expand Down Expand Up @@ -74,13 +76,16 @@ public void refresh(DtpProperties dtpProperties) {
@Override
protected void initialize() {
super.initialize();
DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension();
Map<String, Object> executorMap = dataStore.get(EXECUTOR_SERVICE_COMPONENT_KEY);
if (MapUtils.isNotEmpty(executorMap) && registered.compareAndSet(false, true)) {
executorMap.forEach((k, v) -> {
val proxy = new ThreadPoolExecutorProxy((ThreadPoolExecutor) v);
executorMap.replace(k, proxy);
putAndFinalize(genTpName(k), (ExecutorService) v, proxy);
val handlers = JVMTI.getInstances(WrappedChannelHandler.class);
if (CollectionUtils.isNotEmpty(handlers) && registered.compareAndSet(false, true)) {
DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension();
handlers.forEach(handler -> {
val executor = handler.getExecutor();
if (executor instanceof ThreadPoolExecutor) {
String tpName = genTpName(handler.getUrl().getPort());
enhanceOriginExecutor(tpName, (ThreadPoolExecutor) executor, EXECUTOR_FIELD, handler);
dataStore.put(EXECUTOR_SERVICE_COMPONENT_KEY, tpName, handler.getExecutor());
}
});
}
}
Expand All @@ -90,7 +95,7 @@ protected String getTpPrefix() {
return TP_PREFIX;
}

private String genTpName(String port) {
private String genTpName(int port) {
return TP_PREFIX + "#" + port;
}
}

0 comments on commit 04ef19e

Please sign in to comment.