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