You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2019/07/02 10:21:44 UTC

[dubbo-go] branch master updated: Fix: do not copy sync.Map

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 1178d9a  Fix: do not copy sync.Map
1178d9a is described below

commit 1178d9a142bda19c04f49a9f584c96f68540a029
Author: AlexStocks <al...@foxmail.com>
AuthorDate: Tue Jul 2 18:21:34 2019 +0800

    Fix: do not copy sync.Map
---
 common/config/environment.go   | 17 +++++++++++++----
 config/registry_config.go      |  4 ++--
 remoting/zookeeper/listener.go |  6 +++---
 3 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/common/config/environment.go b/common/config/environment.go
index 998f0be..8709d69 100644
--- a/common/config/environment.go
+++ b/common/config/environment.go
@@ -63,32 +63,40 @@ func (env *Environment) UpdateExternalConfigMap(externalMap map[string]string) {
 func (env *Environment) Configuration() *list.List {
 	list := list.New()
 	memConf := newInmemoryConfiguration()
-	memConf.setProperties(env.externalConfigMap)
+	memConf.setProperties(&(env.externalConfigMap))
 	list.PushBack(memConf)
 	return list
 }
 
 type InmemoryConfiguration struct {
-	store sync.Map
+	store *sync.Map
 }
 
 func newInmemoryConfiguration() *InmemoryConfiguration {
 	return &InmemoryConfiguration{}
 }
-func (conf *InmemoryConfiguration) setProperties(p sync.Map) {
+func (conf *InmemoryConfiguration) setProperties(p *sync.Map) {
 	conf.store = p
 }
 
 func (conf *InmemoryConfiguration) GetProperty(key string) (bool, string) {
+	if conf.store == nil {
+		return false, ""
+	}
+
 	v, ok := conf.store.Load(key)
 	if ok {
 		return true, v.(string)
 	}
-	return false, ""
 
+	return false, ""
 }
 
 func (conf *InmemoryConfiguration) GetSubProperty(subKey string) map[string]struct{} {
+	if conf.store == nil {
+		return nil
+	}
+
 	properties := make(map[string]struct{})
 	conf.store.Range(func(key, value interface{}) bool {
 		if idx := strings.Index(key.(string), subKey); idx >= 0 {
@@ -100,5 +108,6 @@ func (conf *InmemoryConfiguration) GetSubProperty(subKey string) map[string]stru
 		}
 		return true
 	})
+
 	return properties
 }
diff --git a/config/registry_config.go b/config/registry_config.go
index 0c6b326..1a926b4 100644
--- a/config/registry_config.go
+++ b/config/registry_config.go
@@ -37,8 +37,8 @@ type RegistryConfig struct {
 	Group      string `yaml:"group" json:"group,omitempty" property:"group"`
 	//for registry
 	Address  string `yaml:"address" json:"address,omitempty" property:"address"`
-	Username string `yaml:"username" json:"address,omitempty" property:"username"`
-	Password string `yaml:"password" json:"address,omitempty"  property:"password"`
+	Username string `yaml:"username" json:"username,omitempty" property:"username"`
+	Password string `yaml:"password" json:"password,omitempty"  property:"password"`
 }
 
 func (*RegistryConfig) Prefix() string {
diff --git a/remoting/zookeeper/listener.go b/remoting/zookeeper/listener.go
index af668a1..5b9e0a8 100644
--- a/remoting/zookeeper/listener.go
+++ b/remoting/zookeeper/listener.go
@@ -129,14 +129,14 @@ func (l *ZkEventListener) handleZkNodeEvent(zkPath string, children []string, li
 			continue
 		}
 		// listen l service node
-		go func(node string) {
+		go func(node, childNode string) {
 			logger.Infof("delete zkNode{%s}", node)
 			if l.ListenServiceNodeEvent(node, listener) {
-				logger.Infof("delete content{%s}", n)
+				logger.Infof("delete content{%s}", childNode)
 				listener.DataChange(remoting.Event{Path: zkPath, Action: remoting.EventTypeDel})
 			}
 			logger.Warnf("listenSelf(zk path{%s}) goroutine exit now", zkPath)
-		}(newNode)
+		}(newNode, n)
 	}
 
 	// old node was deleted