This is an automated email from the ASF dual-hosted git repository.

Alanxtl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git


The following commit(s) were added to refs/heads/develop by this push:
     new 706090f7e feat(service-discovery): 稳定应用级服务发现使用的元数据key (#3362)
706090f7e is described below

commit 706090f7ed00917644e89fa537e90c557d214891
Author: Xuetao Li <[email protected]>
AuthorDate: Thu Jun 25 08:52:45 2026 +0000

    feat(service-discovery): 稳定应用级服务发现使用的元数据key (#3362)
    
    * stablize_register_services
    
    * imprt format
---
 .../servicediscovery/service_discovery_registry.go     | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/registry/servicediscovery/service_discovery_registry.go 
b/registry/servicediscovery/service_discovery_registry.go
index e01d42154..6e8701d3e 100644
--- a/registry/servicediscovery/service_discovery_registry.go
+++ b/registry/servicediscovery/service_discovery_registry.go
@@ -19,6 +19,7 @@ package servicediscovery
 
 import (
        "errors"
+       "sort"
        "strconv"
        "strings"
        "sync"
@@ -198,8 +199,7 @@ func (s *serviceDiscoveryRegistry) UnSubscribe(url 
*common.URL, listener registr
        if services == nil {
                return nil
        }
-       // FIXME ServiceNames.String() is not good
-       serviceNamesKey := services.String()
+       serviceNamesKey := sortServices(services)
        l := s.serviceListeners[serviceNamesKey]
        if l != nil {
                l.RemoveListener(url.ServiceKey())
@@ -354,9 +354,8 @@ func (s *serviceDiscoveryRegistry) Subscribe(url 
*common.URL, notify registry.No
 }
 
 func (s *serviceDiscoveryRegistry) SubscribeURL(url *common.URL, notify 
registry.NotifyListener, services *gxset.HashSet) {
-       // FIXME ServiceNames.String() is not good
        var err error
-       serviceNamesKey := services.String()
+       serviceNamesKey := sortServices(services)
        protocol := constant.TriProtocol // consume "tri" protocol by default, 
other protocols need to be specified on reference/consumer explicitly
        if url.Protocol != "" {
                protocol = url.Protocol
@@ -396,6 +395,17 @@ func (s *serviceDiscoveryRegistry) SubscribeURL(url 
*common.URL, notify registry
        }()
 }
 
+func sortServices(services *gxset.HashSet) string {
+       list := make([]string, 0, services.Size())
+       for _, v := range services.Values() {
+               if s, ok := v.(string); ok && s != "" {
+                       list = append(list, s)
+               }
+       }
+       sort.Strings(list)
+       return strings.Join(list, ",")
+}
+
 // LoadSubscribeInstances load subscribe instance
 func (s *serviceDiscoveryRegistry) LoadSubscribeInstances(url *common.URL, 
notify registry.NotifyListener) error {
        return nil

Reply via email to