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 {