diff --git a/protocol/dubbo/dubbo_invoker.go b/protocol/dubbo/dubbo_invoker.go
index aed33a63383d60b4f610f16cbf0e3f9e8d8d34a8..bc85d73032cbbf01dabb3c951c051cac58f57e7c 100644
--- a/protocol/dubbo/dubbo_invoker.go
+++ b/protocol/dubbo/dubbo_invoker.go
@@ -196,9 +196,9 @@ func (di *DubboInvoker) Destroy() {
 		di.BaseInvoker.Destroy()
 		client := di.getClient()
 		if client != nil {
-			client.DecreaseActiveNumber()
+			activeNumber := client.DecreaseActiveNumber()
 			di.setClient(nil)
-			if client.GetActiveNumber() == 0 {
+			if activeNumber == 0 {
 				exchangeClientMap.Delete(di.GetUrl().Location)
 				client.Close()
 			}
diff --git a/remoting/exchange_client.go b/remoting/exchange_client.go
index e611586efce5c01346e4b7ed53af4f49690c2fbd..6d57a1471e75127cad33c847c9a04a500b6034c4 100644
--- a/remoting/exchange_client.go
+++ b/remoting/exchange_client.go
@@ -92,13 +92,13 @@ func (cl *ExchangeClient) doInit(url *common.URL) error {
 }
 
 // increase number of service using client
-func (client *ExchangeClient) IncreaseActiveNumber() {
-	atomic.AddUint32(&client.activeNum, 1)
+func (client *ExchangeClient) IncreaseActiveNumber() uint32 {
+	return atomic.AddUint32(&client.activeNum, 1)
 }
 
 // decrease number of service using client
-func (client *ExchangeClient) DecreaseActiveNumber() {
-	atomic.AddUint32(&client.activeNum, ^uint32(0))
+func (client *ExchangeClient) DecreaseActiveNumber() uint32 {
+	return atomic.AddUint32(&client.activeNum, ^uint32(0))
 }
 
 // get number of service using client