From cb8c6b7024456088ff34156329b51e61012332cc Mon Sep 17 00:00:00 2001 From: QilongZhang Date: Thu, 13 Jun 2019 11:38:41 +0800 Subject: [PATCH] fix #664 --- .../client/AllConnectConnectionHolder.java | 1 + .../AllConnectConnectionHolderTest.java | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/core-impl/client/src/main/java/com/alipay/sofa/rpc/client/AllConnectConnectionHolder.java b/core-impl/client/src/main/java/com/alipay/sofa/rpc/client/AllConnectConnectionHolder.java index b44c78958..01632f304 100644 --- a/core-impl/client/src/main/java/com/alipay/sofa/rpc/client/AllConnectConnectionHolder.java +++ b/core-impl/client/src/main/java/com/alipay/sofa/rpc/client/AllConnectConnectionHolder.java @@ -631,6 +631,7 @@ protected Map clearProviders() { aliveConnections.clear(); retryConnections.clear(); uninitializedConnections.clear(); + lastAddresses.clear(); return all; } finally { providerLock.unlock(); diff --git a/test/test-integration/src/test/java/com/alipay/sofa/rpc/test/client/AllConnectConnectionHolderTest.java b/test/test-integration/src/test/java/com/alipay/sofa/rpc/test/client/AllConnectConnectionHolderTest.java index 3b6259114..76492559b 100644 --- a/test/test-integration/src/test/java/com/alipay/sofa/rpc/test/client/AllConnectConnectionHolderTest.java +++ b/test/test-integration/src/test/java/com/alipay/sofa/rpc/test/client/AllConnectConnectionHolderTest.java @@ -161,4 +161,36 @@ public void getAvailableClientTransport3() throws Exception { consumerConfig.unRefer(); } + + @Test + public void getAvailableClientTransport4() throws Exception { + ConsumerConfig consumerConfig = new ConsumerConfig() + .setInterfaceId(HelloService.class.getName()) + .setDirectUrl("bolt://127.0.0.1:22223,bolt://127.0.0.1:22224") + .setConnectionHolder("all") + .setRegister(false) + .setLazy(true) + .setTimeout(3000); + HelloService helloService = consumerConfig.refer(); + ClientProxyInvoker invoker = (ClientProxyInvoker) ProxyFactory.getInvoker(helloService, + consumerConfig.getProxy()); + Cluster cluster = invoker.getCluster(); + Assert.assertTrue(cluster.getConnectionHolder() instanceof AllConnectConnectionHolder); + AllConnectConnectionHolder holder = (AllConnectConnectionHolder) cluster.getConnectionHolder(); + + ProviderGroup providerGroups = new ProviderGroup(); + providerGroups.add(ProviderHelper.toProviderInfo("bolt://127.0.0.1:22223")); + providerGroups.add(ProviderHelper.toProviderInfo("bolt://127.0.0.1:22224")); + holder.updateProviders(providerGroups); + Set last = holder.currentProviderList(); + Assert.assertEquals(2, last.size()); + + ProviderGroup providerGroups2 = new ProviderGroup(); + holder.updateProviders(providerGroups2); + Set current = holder.currentProviderList(); + + Assert.assertEquals(0, current.size()); + + consumerConfig.unRefer(); + } } \ No newline at end of file