From 55b69b55f9a73a9a73214b91f85e2813286629a8 Mon Sep 17 00:00:00 2001 From: tingfeng Date: Tue, 1 Aug 2023 18:22:23 +0800 Subject: [PATCH 1/5] tag subnets --- dubbo-extensions-dependencies-bom/pom.xml | 12 +++ dubbo-tag-extensions/README.md | 65 ++++++++++++++ dubbo-tag-extensions/README_zh.md | 65 ++++++++++++++ .../dubbo-tag-subnets/pom.xml | 67 +++++++++++++++ .../config/SubnetTagConfigPostProcessor.java | 61 +++++++++++++ .../dubbo/tag/subnets/utils/SubnetUtil.java | 85 +++++++++++++++++++ ...rg.apache.dubbo.config.ConfigPostProcessor | 1 + .../tag/subnets/utils/SubnetUtilTest.java | 39 +++++++++ .../src/test/resources/log4j.properties | 7 ++ dubbo-tag-extensions/pom.xml | 35 ++++++++ pom.xml | 1 + 11 files changed, 438 insertions(+) create mode 100644 dubbo-tag-extensions/README.md create mode 100644 dubbo-tag-extensions/README_zh.md create mode 100644 dubbo-tag-extensions/dubbo-tag-subnets/pom.xml create mode 100644 dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/config/SubnetTagConfigPostProcessor.java create mode 100644 dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/utils/SubnetUtil.java create mode 100644 dubbo-tag-extensions/dubbo-tag-subnets/src/main/resources/META-INF/dubbo/org.apache.dubbo.config.ConfigPostProcessor create mode 100644 dubbo-tag-extensions/dubbo-tag-subnets/src/test/java/org/apache/dubbo/tag/subnets/utils/SubnetUtilTest.java create mode 100644 dubbo-tag-extensions/dubbo-tag-subnets/src/test/resources/log4j.properties create mode 100644 dubbo-tag-extensions/pom.xml diff --git a/dubbo-extensions-dependencies-bom/pom.xml b/dubbo-extensions-dependencies-bom/pom.xml index 2e998be0c..69328c721 100644 --- a/dubbo-extensions-dependencies-bom/pom.xml +++ b/dubbo-extensions-dependencies-bom/pom.xml @@ -135,6 +135,8 @@ 3.0.20.Final 0.2.1 1.2.5 + 3.9.0 + 2.0 @@ -489,6 +491,16 @@ polaris-adapter-dubbo ${polaris_adapter_version} + + commons-net + commons-net + ${commons_net_version} + + + org.yaml + snakeyaml + ${snakeyaml_version} + diff --git a/dubbo-tag-extensions/README.md b/dubbo-tag-extensions/README.md new file mode 100644 index 000000000..805196069 --- /dev/null +++ b/dubbo-tag-extensions/README.md @@ -0,0 +1,65 @@ +# dubbo tag subnets + +[中文](./README.md) + +dubbo-tag-subnets will generate a tag by subnets, then consumer will prefer rpc provider in the same subnets. + +- example1: there are 3 zone(cn-shanghai-a/cn-shanghai-b/cn-shanghai-c) in aliyun-VPC, service rpc in the same zone +``` +cn|shanghai|a: +- 172.37.66.0/24 #zone=cn-shanghai-a +cn|shanghai|b: +- 172.37.68.0/24 #zone=cn-shanghai-b +cn|shanghai|c: +- 172.37.69.0/24 #zone=cn-shanghai-c +``` +- example2: there is a big zone and there are 3 cells in it , service rpc in the same cell +``` +cn|shanghai|a|cell-1: +- 172.31.35.0/24 #zone=cn-shanghai-a +cn|shanghai|a|cell-2: +- 172.31.36.0/24 #zone=cn-shanghai-a +cn|shanghai|a|cell-3: +- 172.31.37.0/24 #zone=cn-shanghai-a +``` +- example3: there 3 seperate zones(a/b/c) and a common zone(d), consumer prefer rpc in near zones(a/b/c), and then rpc common zone(d). +``` +cn|shanghai|a: +- 172.37.66.0/24 #zone=cn-shanghai-a +cn|hangzhou|b: +- 172.37.67.0/24 #zone=cn-hangzhou-b +cn|shenzhen|c: +- 172.37.68.0/24 #zone=cn-shenzhen-c +"": +- 172.37.69.0/24 #zone=cn-shanghai-d, as common service +``` + +## How to use? + +1. import dependency + +``` + + org.apache.dubbo.extensions + dubbo-tag-subnets + ${dubbo-tag-subnets-version} + + +``` + +2. set tag-subnets in config-center path=/dubbo/config/tag.subnets, zookeeper example: +``` +echo 'cn|cn-northwest|cell-1: +- 172.37.66.0/24 #cn-northwest-1a +cn|cn-north|cell-2: +- 172.37.67.0/24 #cn-northwest-1b +cn|cn-north: +- 192.168.1.0/24 #cn-north-1a +' | tee tag.subnets.yaml +./zkCli.sh create /dubbo/config/tag.subnets "" +./zkCli.sh set /dubbo/config/tag.subnets "$(cat tag.subnets.yaml)" +./zkCli.sh get /dubbo/config/tag.subnets +``` + + +3. start your provider, you will see tag generate by subnets in registry. diff --git a/dubbo-tag-extensions/README_zh.md b/dubbo-tag-extensions/README_zh.md new file mode 100644 index 000000000..e3c31dbd4 --- /dev/null +++ b/dubbo-tag-extensions/README_zh.md @@ -0,0 +1,65 @@ +# dubbo tag subnets + +[中文](./README.md) + +dubbo-tag-subnets 会根据子网生成tag, 然后同子网内的tag相同, 服务调用会优先发生在同子网中. + +- 示例1: 在阿里云VPC, 有三个可用区(cn-shanghai-a/cn-shanghai-b/cn-shanghai-c) , 服务在同一可用区中调用 +``` +cn|shanghai|a: +- 172.37.66.0/24 #zone=cn-shanghai-a +cn|shanghai|b: +- 172.37.68.0/24 #zone=cn-shanghai-b +cn|shanghai|c: +- 172.37.69.0/24 #zone=cn-shanghai-c +``` +- 示例2: 有三个单元在一个大的可用区cn-shanghai-a , 服务在同单元中调用 +``` +cn|shanghai|a|cell-1: +- 172.31.35.0/24 #zone=cn-shanghai-a +cn|shanghai|a|cell-2: +- 172.31.36.0/24 #zone=cn-shanghai-a +cn|shanghai|a|cell-3: +- 172.31.37.0/24 #zone=cn-shanghai-a +``` +- 示例3: 有三个"独立的可用区"(a/b/c) ,有一个"公共的可用区"(d), 服务消费方优先在自己"独立可用区"中调用, 然后调用"公共的可用区". +``` +cn|shanghai|a: +- 172.37.66.0/24 #zone=cn-shanghai-a +cn|hangzhou|b: +- 172.37.67.0/24 #zone=cn-hangzhou-b +cn|shenzhen|c: +- 172.37.68.0/24 #zone=cn-shenzhen-c +"": +- 172.37.69.0/24 #zone=cn-shanghai-d, as common service +``` + +## 如何使用? + +1. 引入依赖 + +``` + + org.apache.dubbo.extensions + dubbo-tag-subnets + ${dubbo-tag-subnets-version} + + +``` + +2. 在配置中心设置 tag-subnets ,路径为/dubbo/config/tag.subnets, zookeeper 配置示例: +``` +echo 'cn|cn-northwest|cell-1: +- 172.37.66.0/24 #cn-northwest-1a +cn|cn-north|cell-2: +- 172.37.67.0/24 #cn-northwest-1b +cn|cn-north: +- 192.168.1.0/24 #cn-north-1a +' | tee tag.subnets.yaml +./zkCli.sh create /dubbo/config/tag.subnets "" +./zkCli.sh set /dubbo/config/tag.subnets "$(cat tag.subnets.yaml)" +./zkCli.sh get /dubbo/config/tag.subnets +``` + + +3. 启动服务提供方, 您将在注册中心看到根据子网生成的服务标签. diff --git a/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml b/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml new file mode 100644 index 000000000..8d8ba07ff --- /dev/null +++ b/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml @@ -0,0 +1,67 @@ + + + + dubbo-tag-extensions + org.apache.dubbo.extensions + ${revision} + ../pom.xml + + 4.0.0 + + 1.0.2-SNAPSHOT + dubbo-tag-subnets + ${project.artifactId} + The SOFARegistry module of Dubbo project + + + 2.1 + -Dnetwork_interface_denylist=docker0 + + + + + org.apache.dubbo + dubbo-registry-api + true + + + org.apache.dubbo + dubbo-common + true + + + org.apache.dubbo + dubbo-config-api + true + + + commons-net + commons-net + + + org.yaml + snakeyaml + + + org.testcontainers + testcontainers + test + + + diff --git a/dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/config/SubnetTagConfigPostProcessor.java b/dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/config/SubnetTagConfigPostProcessor.java new file mode 100644 index 000000000..003b7e6cf --- /dev/null +++ b/dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/config/SubnetTagConfigPostProcessor.java @@ -0,0 +1,61 @@ +/* + * 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.dubbo.tag.subnets.config; + +import org.apache.dubbo.common.config.ConfigurationUtils; +import org.apache.dubbo.common.extension.Activate; +import org.apache.dubbo.common.utils.StringUtils; +import org.apache.dubbo.config.ConfigPostProcessor; +import org.apache.dubbo.config.ServiceConfig; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.ScopeModelAware; +import org.apache.dubbo.tag.subnets.utils.SubnetUtil; + +import static org.apache.dubbo.common.utils.NetUtils.getLocalHost; + + +@Activate +public class SubnetTagConfigPostProcessor implements ConfigPostProcessor, ScopeModelAware { + private ApplicationModel applicationModel; + + @Override + public void setApplicationModel(ApplicationModel applicationModel) { + this.applicationModel = applicationModel; + } + + @Override + public void postProcessServiceConfig(ServiceConfig serviceConfig) { + if (StringUtils.isNotBlank(serviceConfig.getTag())) { + return; + } + if (SubnetUtil.isEmpty()) { + String content = ConfigurationUtils.getCachedDynamicProperty(applicationModel.getDefaultModule(), SubnetUtil.TAG_SUBNETS_KEY, null); + SubnetUtil.init(content); + } + if (SubnetUtil.isEmpty()) { + return; + } + String providerHost = serviceConfig.getProvider().getHost(); + if (StringUtils.isBlank(providerHost)) { + providerHost = getLocalHost(); + } + String tagLevel = SubnetUtil.getTagLevelByHost(providerHost); + serviceConfig.setTag(tagLevel); + } + + +} diff --git a/dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/utils/SubnetUtil.java b/dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/utils/SubnetUtil.java new file mode 100644 index 000000000..eaf666700 --- /dev/null +++ b/dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/utils/SubnetUtil.java @@ -0,0 +1,85 @@ +/* + * 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.dubbo.tag.subnets.utils; + +import org.apache.dubbo.common.utils.StringUtils; + +import org.apache.commons.net.util.SubnetUtils; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.SafeConstructor; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.locks.ReentrantReadWriteLock; + + +public class SubnetUtil { + public static final String TAG_SUBNETS_KEY = "tag.subnets"; + + private static Map> cellSubnets = new ConcurrentHashMap<>(); + protected static final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + protected static final ReentrantReadWriteLock.ReadLock readLock = lock.readLock(); + protected static final ReentrantReadWriteLock.WriteLock writeLock = lock.writeLock(); + + public static boolean isEmpty() { + try { + readLock.lock(); + return cellSubnets.isEmpty(); + } finally { + readLock.unlock(); + } + } + + public static void init(String content) { + if (StringUtils.isBlank(content)) { + return; + } + try { + writeLock.lock(); + Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions())); + cellSubnets = new HashMap<>(); + Map> tmpPathSubnet = (Map>) yaml.load(content); + for (Map.Entry> entry : tmpPathSubnet.entrySet()) { + String path = entry.getKey(); + List subnetInfos = cellSubnets.computeIfAbsent(path, f -> new ArrayList()); + entry.getValue().forEach(e -> subnetInfos.add(new SubnetUtils(e.trim()).getInfo())); + } + } finally { + writeLock.unlock(); + } + } + + public static String getTagLevelByHost(String host) { + try { + readLock.lock(); + for (Map.Entry> entry : cellSubnets.entrySet()) { + for (SubnetUtils.SubnetInfo subnetInfo : entry.getValue()) { + if (subnetInfo.isInRange(host)) { + return entry.getKey(); + } + } + } + return null; + } finally { + readLock.unlock(); + } + } +} diff --git a/dubbo-tag-extensions/dubbo-tag-subnets/src/main/resources/META-INF/dubbo/org.apache.dubbo.config.ConfigPostProcessor b/dubbo-tag-extensions/dubbo-tag-subnets/src/main/resources/META-INF/dubbo/org.apache.dubbo.config.ConfigPostProcessor new file mode 100644 index 000000000..f37740a4d --- /dev/null +++ b/dubbo-tag-extensions/dubbo-tag-subnets/src/main/resources/META-INF/dubbo/org.apache.dubbo.config.ConfigPostProcessor @@ -0,0 +1 @@ +tag-subnets=org.apache.dubbo.tag.subnets.config.SubnetTagConfigPostProcessor diff --git a/dubbo-tag-extensions/dubbo-tag-subnets/src/test/java/org/apache/dubbo/tag/subnets/utils/SubnetUtilTest.java b/dubbo-tag-extensions/dubbo-tag-subnets/src/test/java/org/apache/dubbo/tag/subnets/utils/SubnetUtilTest.java new file mode 100644 index 000000000..3659d162a --- /dev/null +++ b/dubbo-tag-extensions/dubbo-tag-subnets/src/test/java/org/apache/dubbo/tag/subnets/utils/SubnetUtilTest.java @@ -0,0 +1,39 @@ +/* + * 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.dubbo.tag.subnets.utils; + + +import org.apache.dubbo.tag.subnets.utils.SubnetUtil; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class SubnetUtilTest { + @Test + public void testLoadContent() { + String content = "" +// + "cn|cn-northwest|cell-1: \n" + + "- 172.37.66.0/24 #cn-northwest-1a\n" + + "cn|cn-north|cell-2: \n" + + "- 172.37.67.0/24 #cn-northwest-1b\n" + + "\"\": \n" + + "- 172.37.33.0/24 #cn-north-1a\n"; + SubnetUtil.init(content); + Assertions.assertEquals(SubnetUtil.getTagLevelByHost("172.37.66.1"),"cn|cn-northwest|cell-1"); + Assertions.assertEquals(SubnetUtil.getTagLevelByHost("172.37.33.1"),""); + } +} diff --git a/dubbo-tag-extensions/dubbo-tag-subnets/src/test/resources/log4j.properties b/dubbo-tag-extensions/dubbo-tag-subnets/src/test/resources/log4j.properties new file mode 100644 index 000000000..8de4c4fdd --- /dev/null +++ b/dubbo-tag-extensions/dubbo-tag-subnets/src/test/resources/log4j.properties @@ -0,0 +1,7 @@ +###set log levels### +log4j.rootLogger=info, stdout +###output to the console### +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss:SSS z}] %t %5p %c{2}: %m%n diff --git a/dubbo-tag-extensions/pom.xml b/dubbo-tag-extensions/pom.xml new file mode 100644 index 000000000..1c62919b3 --- /dev/null +++ b/dubbo-tag-extensions/pom.xml @@ -0,0 +1,35 @@ + + + + + org.apache.dubbo.extensions + extensions-parent + ${revision} + ../pom.xml + + 4.0.0 + ${revision} + pom + dubbo-tag-extensions + + + dubbo-tag-subnets + + diff --git a/pom.xml b/pom.xml index 734d33a62..41b6778c8 100644 --- a/pom.xml +++ b/pom.xml @@ -95,6 +95,7 @@ dubbo-serialization-extensions dubbo-mock-extensions dubbo-gateway-extensions + dubbo-tag-extensions From 7e8007915ea5e63dda641106ef6313b4efaa7ac1 Mon Sep 17 00:00:00 2001 From: tingfeng Date: Wed, 2 Aug 2023 09:49:12 +0800 Subject: [PATCH 2/5] change some protected field to private final;remote unused import --- .../apache/dubbo/tag/subnets/utils/SubnetUtil.java | 11 +++++------ .../dubbo/tag/subnets/utils/SubnetUtilTest.java | 2 -- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/utils/SubnetUtil.java b/dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/utils/SubnetUtil.java index eaf666700..7d74b7949 100644 --- a/dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/utils/SubnetUtil.java +++ b/dubbo-tag-extensions/dubbo-tag-subnets/src/main/java/org/apache/dubbo/tag/subnets/utils/SubnetUtil.java @@ -24,7 +24,6 @@ import org.yaml.snakeyaml.constructor.SafeConstructor; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -34,10 +33,10 @@ public class SubnetUtil { public static final String TAG_SUBNETS_KEY = "tag.subnets"; - private static Map> cellSubnets = new ConcurrentHashMap<>(); - protected static final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); - protected static final ReentrantReadWriteLock.ReadLock readLock = lock.readLock(); - protected static final ReentrantReadWriteLock.WriteLock writeLock = lock.writeLock(); + private static final Map> cellSubnets = new ConcurrentHashMap<>(); + private static final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + private static final ReentrantReadWriteLock.ReadLock readLock = lock.readLock(); + private static final ReentrantReadWriteLock.WriteLock writeLock = lock.writeLock(); public static boolean isEmpty() { try { @@ -55,7 +54,7 @@ public static void init(String content) { try { writeLock.lock(); Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions())); - cellSubnets = new HashMap<>(); + cellSubnets.clear(); Map> tmpPathSubnet = (Map>) yaml.load(content); for (Map.Entry> entry : tmpPathSubnet.entrySet()) { String path = entry.getKey(); diff --git a/dubbo-tag-extensions/dubbo-tag-subnets/src/test/java/org/apache/dubbo/tag/subnets/utils/SubnetUtilTest.java b/dubbo-tag-extensions/dubbo-tag-subnets/src/test/java/org/apache/dubbo/tag/subnets/utils/SubnetUtilTest.java index 3659d162a..0446d365d 100644 --- a/dubbo-tag-extensions/dubbo-tag-subnets/src/test/java/org/apache/dubbo/tag/subnets/utils/SubnetUtilTest.java +++ b/dubbo-tag-extensions/dubbo-tag-subnets/src/test/java/org/apache/dubbo/tag/subnets/utils/SubnetUtilTest.java @@ -17,8 +17,6 @@ package org.apache.dubbo.tag.subnets.utils; -import org.apache.dubbo.tag.subnets.utils.SubnetUtil; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; From c6083fb12db04ed6f3607bfba9d6d3016a30a389 Mon Sep 17 00:00:00 2001 From: carlvine500 Date: Thu, 10 Aug 2023 08:41:15 +0800 Subject: [PATCH 3/5] Update pom.xml remove redundant properties. --- dubbo-tag-extensions/dubbo-tag-subnets/pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml b/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml index 8d8ba07ff..3f89af7a5 100644 --- a/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml +++ b/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml @@ -29,11 +29,6 @@ ${project.artifactId} The SOFARegistry module of Dubbo project - - 2.1 - -Dnetwork_interface_denylist=docker0 - - org.apache.dubbo From 0a123b2d413bc2306dd0b094d712b8fd3114cab6 Mon Sep 17 00:00:00 2001 From: tingfeng Date: Fri, 11 Aug 2023 15:04:29 +0800 Subject: [PATCH 4/5] add dependency junit-jupiter-engine --- dubbo-tag-extensions/dubbo-tag-subnets/pom.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml b/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml index 3f89af7a5..fc3d6a597 100644 --- a/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml +++ b/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml @@ -54,8 +54,9 @@ snakeyaml - org.testcontainers - testcontainers + org.junit.jupiter + junit-jupiter-engine + ${junit_jupiter_version} test From 61c3ac33d9546853a853966989be157473944689 Mon Sep 17 00:00:00 2001 From: tingfeng Date: Mon, 14 Aug 2023 18:23:55 +0800 Subject: [PATCH 5/5] change description in pom.xml --- dubbo-tag-extensions/dubbo-tag-subnets/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml b/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml index fc3d6a597..99b6b3146 100644 --- a/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml +++ b/dubbo-tag-extensions/dubbo-tag-subnets/pom.xml @@ -27,7 +27,7 @@ 1.0.2-SNAPSHOT dubbo-tag-subnets ${project.artifactId} - The SOFARegistry module of Dubbo project + The tag subnets module of dubbo project