You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2023/03/28 03:06:22 UTC
[dubbo-go] 01/02: Merge branch '3.0' into 3.1
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.1
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
commit 01ac8a5ca0c642dcfd21d5a8356a11d96d084e6a
Merge: 59bef4dd1 830fd4aba
Author: chickenlj <ke...@gmail.com>
AuthorDate: Tue Mar 28 11:01:56 2023 +0800
Merge branch '3.0' into 3.1
# Conflicts:
# metadata/report/nacos/report.go
# registry/servicediscovery/service_discovery_registry.go
common/constant/default.go | 10 +
common/constant/key.go | 1 +
common/url.go | 2 +
config/instance/metadata_report_test.go | 7 +-
config/metric_config.go | 1 +
config/protocol_config.go | 16 +
config/protocol_config_test.go | 3 +
config/root_config.go | 13 +
config/service_config.go | 9 +-
config/testdata/config/protocol/application.yaml | 7 +-
config/tls_config.go | 52 ++
.../tls_config_test.go | 31 +-
config_center/nacos/impl.go | 16 +
config_center/zookeeper/impl.go | 10 +
go.mod | 26 +-
go.sum | 697 +++++++++++++++++++--
metadata/mapping/memory/service_name_mapping.go | 7 +-
metadata/mapping/metadata/service_name_mapping.go | 11 +-
metadata/mapping/mock_service_name_mapping.go | 7 +-
metadata/mapping/service_name_mapping.go | 4 +-
metadata/report/etcd/report.go | 7 +-
metadata/report/nacos/report.go | 56 +-
metadata/report/report.go | 6 +-
metadata/report/zookeeper/report.go | 7 +-
metadata/service/remote/service_test.go | 7 +-
protocol/dubbo3/dubbo3_invoker.go | 17 +-
protocol/dubbo3/dubbo3_protocol.go | 18 +-
protocol/grpc/client.go | 17 +-
protocol/grpc/client_test.go | 7 +
protocol/grpc/grpc_protocol.go | 4 -
protocol/grpc/server.go | 15 +-
registry/event.go | 27 +
registry/nacos/service_discovery_test.go | 4 +-
registry/polaris/registry.go | 2 +-
registry/polaris/service_discovery.go | 11 +-
registry/polaris/utils.go | 4 -
.../service_mapping_changed_listener.go | 23 +-
.../servicediscovery/service_discovery_registry.go | 77 ++-
.../service_instances_changed_listener_impl.go | 2 +-
.../service_mapping_change_listener_impl.go | 108 ++++
remoting/zookeeper/listener.go | 5 +
tools/dubbogo-cli/cmd/show.go | 15 +-
tools/dubbogo-cli/go.mod | 35 +-
tools/dubbogo-cli/go.sum | 3 +-
44 files changed, 1201 insertions(+), 206 deletions(-)
diff --cc metadata/report/nacos/report.go
index e55793ea1,c4487f878..2b753f770
--- a/metadata/report/nacos/report.go
+++ b/metadata/report/nacos/report.go
@@@ -209,9 -210,37 +210,37 @@@ func (n *nacosMetadataReport) getConfig
return cfg, nil
}
+ func (n *nacosMetadataReport) addListener(key string, group string, notify registry.MappingListener) error {
+ return n.client.Client().ListenConfig(vo.ConfigParam{
+ DataId: key,
+ Group: group,
+ OnChange: func(namespace, group, dataId, data string) {
+ go callback(notify, dataId, data)
+ },
+ })
+ }
+
+ func callback(notify registry.MappingListener, dataId, data string) {
+ appNames := strings.Split(data, constant.CommaSeparator)
+ set := gxset.NewSet()
+ for _, app := range appNames {
+ set.Add(app)
+ }
+ if err := notify.OnEvent(registry.NewServiceMappingChangedEvent(dataId, set)); err != nil {
+ logger.Errorf("serviceMapping callback err: %s", err.Error())
+ }
+ }
+
+ func (n *nacosMetadataReport) removeServiceMappingListener(key string, group string) error {
+ return n.client.Client().CancelListenConfig(vo.ConfigParam{
+ DataId: key,
+ Group: group,
+ })
+ }
+
// RegisterServiceAppMapping map the specified Dubbo service interface to current Dubbo app name
func (n *nacosMetadataReport) RegisterServiceAppMapping(key string, group string, value string) error {
- oldVal, err := n.getConfig(vo.ConfigParam{
+ oldVal, _ := n.getConfig(vo.ConfigParam{
DataId: key,
Group: group,
})
diff --cc registry/servicediscovery/service_discovery_registry.go
index a7b8e5592,6854439fa..5266f4c26
--- a/registry/servicediscovery/service_discovery_registry.go
+++ b/registry/servicediscovery/service_discovery_registry.go
@@@ -197,21 -205,25 +205,31 @@@ func (s *ServiceDiscoveryRegistry) Subs
if err != nil {
return perrors.WithMessage(err, "subscribe url error: "+url.String())
}
- services := s.getServices(url)
+
+ mappingListener := NewMappingListener(s.url, url, s.subscribedServices, notify)
+ services := s.getServices(url, mappingListener)
if services.Empty() {
+ return nil
+ return perrors.Errorf("Should has at least one way to know which services this interface belongs to,"+
+ " either specify 'provided-by' for reference or enable metadata-report center subscription url:%s", url.String())
}
+ // first notify
+ mappingListener.OnEvent(registry.NewServiceMappingChangedEvent(url.ServiceKey(), services))
+ return nil
+ }
+
+ 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()
- protocolServiceKey := url.ServiceKey() + ":" + url.Protocol
+ protocol := "tri" // consume "tri" protocol by default, other protocols need to be specified on reference/consumer explicitly
+ if url.Protocol != "" {
+ protocol = url.Protocol
+ }
+ protocolServiceKey := url.ServiceKey() + ":" + protocol
listener := s.serviceListeners[serviceNamesKey]
if listener == nil {
- listener = event.NewServiceInstancesChangedListener(services)
+ listener = NewServiceInstancesChangedListener(services)
for _, serviceNameTmp := range services.Values() {
serviceName := serviceNameTmp.(string)
instances := s.serviceDiscovery.GetInstances(serviceName)