Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions registry/servicediscovery/service_discovery_registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package servicediscovery

import (
"errors"
"sort"
"strconv"
"strings"
"sync"
Expand Down Expand Up @@ -194,8 +195,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())
Expand Down Expand Up @@ -350,9 +350,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
Expand Down Expand Up @@ -392,6 +391,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
Expand Down
Loading