diff --git a/weed/cluster/cluster.go b/weed/cluster/cluster.go index e79000fbe..2e753812c 100644 --- a/weed/cluster/cluster.go +++ b/weed/cluster/cluster.go @@ -18,9 +18,6 @@ type FilerGroupName string type DataCenter string type Rack string -type Leaders struct { - leaders [3]pb.ServerAddress -} type ClusterNode struct { Address pb.ServerAddress Version string @@ -29,9 +26,7 @@ type ClusterNode struct { DataCenter DataCenter Rack Rack } -type GroupMembers struct { - members map[pb.ServerAddress]*ClusterNode -} + type ClusterNodeGroups struct { groupMembers map[FilerGroupName]*GroupMembers sync.RWMutex @@ -57,42 +52,6 @@ func (g *ClusterNodeGroups) getGroupMembers(filerGroup FilerGroupName, createIfN 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 { g.Lock() defer g.Unlock() diff --git a/weed/cluster/group_members.go b/weed/cluster/group_members.go new file mode 100644 index 000000000..01b97feae --- /dev/null +++ b/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 +}