From 31bd1fbed5ad284cb5bb6274ccb511775155c7ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=88=E9=93=AD?= Date: Tue, 26 Mar 2024 16:34:50 +0800 Subject: [PATCH] Enhanced for Nacos weight configuration --- .../registry/nacos/NacosRegistryHelper.java | 7 ++----- .../nacos/NacosRegistryHelperTest.java | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/registry/registry-nacos/src/main/java/com/alipay/sofa/rpc/registry/nacos/NacosRegistryHelper.java b/registry/registry-nacos/src/main/java/com/alipay/sofa/rpc/registry/nacos/NacosRegistryHelper.java index 2629b2a8e..b8f0bca08 100644 --- a/registry/registry-nacos/src/main/java/com/alipay/sofa/rpc/registry/nacos/NacosRegistryHelper.java +++ b/registry/registry-nacos/src/main/java/com/alipay/sofa/rpc/registry/nacos/NacosRegistryHelper.java @@ -124,14 +124,11 @@ static List convertInstancesToProviders(List allInstance String url = convertInstanceToUrl(instance); ProviderInfo providerInfo = ProviderHelper.toProviderInfo(url); - double nacosWeight = instance.getWeight(); // Nacos的默认权重为1.0 // 当Nacos默认权重传入1.0,根据代码逻辑计算结果为100,与sofa-rpc默认权重一致 // 因为是接口级别,如果不同的服务具有不同的权重也不会出现被覆盖或者冲突的情况 - if (nacosWeight >= 0.0) { - long weight = Math.round(providerInfo.getWeight() * nacosWeight); - providerInfo.setWeight((int) weight); - } + long weight = Math.round(providerInfo.getWeight() * instance.getWeight()); + providerInfo.setWeight((int) weight); providerInfos.add(providerInfo); } diff --git a/registry/registry-nacos/src/test/java/com/alipay/sofa/rpc/registry/nacos/NacosRegistryHelperTest.java b/registry/registry-nacos/src/test/java/com/alipay/sofa/rpc/registry/nacos/NacosRegistryHelperTest.java index a1c9f3e83..df6e1b7bc 100644 --- a/registry/registry-nacos/src/test/java/com/alipay/sofa/rpc/registry/nacos/NacosRegistryHelperTest.java +++ b/registry/registry-nacos/src/test/java/com/alipay/sofa/rpc/registry/nacos/NacosRegistryHelperTest.java @@ -174,4 +174,23 @@ public void testNacosWeightLessThan0() { assertNotNull(providerInfo); assertEquals(100, providerInfo.getWeight()); } + + @Test + public void testNacosWeightWith0() { + Instance instance = new Instance(); + instance.setClusterName(NacosRegistryHelper.DEFAULT_CLUSTER); + instance.setIp("1.1.1.1"); + instance.setPort(12200); + instance.setServiceName("com.alipay.xxx.TestService"); + instance.setWeight(0.0D); + + List providerInfos = NacosRegistryHelper + .convertInstancesToProviders(Lists.newArrayList(instance)); + assertNotNull(providerInfos); + assertEquals(1, providerInfos.size()); + + ProviderInfo providerInfo = providerInfos.get(0); + assertNotNull(providerInfo); + assertEquals(0, providerInfo.getWeight()); + } }