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 2022/06/08 11:03:52 UTC

[dubbo-go-pixiu] branch develop updated: fix cluster nil bug

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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 1c620957 fix cluster nil bug
     new d26000a1 Merge pull request #439 from ztelur/bugfix-0.5.1
1c620957 is described below

commit 1c6209573ffa9d337064ddbc2b7026179bc1bbaf
Author: randy <zt...@gmail.com>
AuthorDate: Sun Jun 5 16:52:51 2022 +0800

    fix cluster nil bug
---
 pkg/server/cluster_manager.go | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/pkg/server/cluster_manager.go b/pkg/server/cluster_manager.go
index d91894cc..c59e32fc 100644
--- a/pkg/server/cluster_manager.go
+++ b/pkg/server/cluster_manager.go
@@ -134,7 +134,7 @@ func (cm *ClusterManager) NewStore(version int32) *ClusterStore {
 	cm.rw.Lock()
 	defer cm.rw.Unlock()
 
-	return &ClusterStore{Version: version}
+	return &ClusterStore{Version: version, clustersMap: map[string]*cluster.Cluster{}}
 }
 
 func (cm *ClusterManager) CompareAndSetStore(store *ClusterStore) bool {
@@ -236,6 +236,11 @@ func (s *ClusterStore) UpdateCluster(new *model.ClusterConfig) {
 
 func (s *ClusterStore) SetEndpoint(clusterName string, endpoint *model.Endpoint) {
 	cluster := s.clustersMap[clusterName]
+	if cluster == nil {
+		c := &model.ClusterConfig{Name: clusterName, LbStr: model.LoadBalancerRoundRobin, Endpoints: []*model.Endpoint{}}
+		s.AddCluster(c)
+		cluster = s.clustersMap[clusterName]
+	}
 
 	for _, c := range s.Config {
 		if c.Name == clusterName {
@@ -256,16 +261,13 @@ func (s *ClusterStore) SetEndpoint(clusterName string, endpoint *model.Endpoint)
 			return
 		}
 	}
-
-	// cluster create
-	c := &model.ClusterConfig{Name: clusterName, LbStr: model.LoadBalancerRoundRobin, Endpoints: []*model.Endpoint{endpoint}}
-	// not call AddCluster, because lock is not reenter
-	s.Config = append(s.Config, c)
 }
 
 func (s *ClusterStore) DeleteEndpoint(clusterName string, endpointID string) {
 	cluster := s.clustersMap[clusterName]
-
+	if cluster == nil {
+		return
+	}
 	for _, c := range s.Config {
 		if c.Name == clusterName {
 			for i, e := range c.Endpoints {