mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-08-01 17:40:22 +08:00
refactor
This commit is contained in:
parent
84ced2abf5
commit
14a19170e2
@ -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
Normal file
46
weed/cluster/group_members.go
Normal file
@ -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…
Reference in New Issue
Block a user