Browse Source

refactor

pull/4605/head
chrislu 2 years ago
parent
commit
14a19170e2
  1. 43
      weed/cluster/cluster.go
  2. 46
      weed/cluster/group_members.go

43
weed/cluster/cluster.go

@ -18,9 +18,6 @@ type FilerGroupName string
type DataCenter string type DataCenter string
type Rack string type Rack string
type Leaders struct {
leaders [3]pb.ServerAddress
}
type ClusterNode struct { type ClusterNode struct {
Address pb.ServerAddress Address pb.ServerAddress
Version string Version string
@ -29,9 +26,7 @@ type ClusterNode struct {
DataCenter DataCenter DataCenter DataCenter
Rack Rack Rack Rack
} }
type GroupMembers struct {
members map[pb.ServerAddress]*ClusterNode
}
type ClusterNodeGroups struct { type ClusterNodeGroups struct {
groupMembers map[FilerGroupName]*GroupMembers groupMembers map[FilerGroupName]*GroupMembers
sync.RWMutex sync.RWMutex
@ -57,42 +52,6 @@ func (g *ClusterNodeGroups) getGroupMembers(filerGroup FilerGroupName, createIfN
return members return members
} }
func (m *GroupMembers) addMember(dataCenter DataCenter, rack Rack, address pb.ServerAddress, version string) *ClusterNode {
if existingNode, found := m.members[address]; found {
existingNode.counter++
return nil
}
t := &ClusterNode{
Address: address,
Version: version,
counter: 1,
CreatedTs: time.Now(),
DataCenter: dataCenter,
Rack: rack,
}
m.members[address] = t
return t
}
func (m *GroupMembers) removeMember(address pb.ServerAddress) bool {
if existingNode, found := m.members[address]; !found {
return false
} else {
existingNode.counter--
if existingNode.counter <= 0 {
delete(m.members, address)
return true
}
}
return false
}
func (m *GroupMembers) GetMembers() (addresses []pb.ServerAddress) {
for k := range m.members {
addresses = append(addresses, k)
}
return
}
func (g *ClusterNodeGroups) AddClusterNode(filerGroup FilerGroupName, nodeType string, dataCenter DataCenter, rack Rack, address pb.ServerAddress, version string) []*master_pb.KeepConnectedResponse { func (g *ClusterNodeGroups) AddClusterNode(filerGroup FilerGroupName, nodeType string, dataCenter DataCenter, rack Rack, address pb.ServerAddress, version string) []*master_pb.KeepConnectedResponse {
g.Lock() g.Lock()
defer g.Unlock() defer g.Unlock()

46
weed/cluster/group_members.go

@ -0,0 +1,46 @@
package cluster
import (
"github.com/seaweedfs/seaweedfs/weed/pb"
"time"
)
type GroupMembers struct {
members map[pb.ServerAddress]*ClusterNode
}
func (m *GroupMembers) addMember(dataCenter DataCenter, rack Rack, address pb.ServerAddress, version string) *ClusterNode {
if existingNode, found := m.members[address]; found {
existingNode.counter++
return nil
}
t := &ClusterNode{
Address: address,
Version: version,
counter: 1,
CreatedTs: time.Now(),
DataCenter: dataCenter,
Rack: rack,
}
m.members[address] = t
return t
}
func (m *GroupMembers) removeMember(address pb.ServerAddress) bool {
if existingNode, found := m.members[address]; !found {
return false
} else {
existingNode.counter--
if existingNode.counter <= 0 {
delete(m.members, address)
return true
}
}
return false
}
func (m *GroupMembers) GetMembers() (addresses []pb.ServerAddress) {
for k := range m.members {
addresses = append(addresses, k)
}
return
}
Loading…
Cancel
Save