From 4355bdd8f0702ebddd7fba2cc8f45c7fd5f7d57e Mon Sep 17 00:00:00 2001 From: Travis Date: Thu, 7 Jan 2021 13:45:46 -0600 Subject: [PATCH] temporarily have cluster implement Noder --- cluster.go | 27 ++++++++++++++++++++++++++- fragment.go | 9 +++------ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/cluster.go b/cluster.go index 154e9f34c..c6e09cee9 100644 --- a/cluster.go +++ b/cluster.go @@ -73,6 +73,8 @@ type nodeAction struct { // cluster represents a collection of nodes. type cluster struct { // nolint: maligned + noder topology.Noder + id string Node *topology.Node nodes []*topology.Node @@ -133,7 +135,7 @@ type cluster struct { // nolint: maligned // newCluster returns a new instance of Cluster with defaults. func newCluster() *cluster { - return &cluster{ + c := &cluster{ Hasher: &Jmphasher{}, partitionN: topology.DefaultPartitionN, ReplicaN: 1, @@ -152,6 +154,8 @@ func newCluster() *cluster { confirmDownRetries: defaultConfirmDownRetries, confirmDownSleep: defaultConfirmDownSleep, } + c.noder = c // TODO: this is temporary until etcd fully implements noder + return c } // initializeAntiEntropy is called by the anti entropy routine when it starts. @@ -1926,6 +1930,27 @@ func (t *Topology) SetNodeState(nodeID string, state string) {} /////////////////////////////////////////// +/////////////////////////////////////////// +// Cluster implements the Noder interface. +// This is temporary and should be removed once etcd is fully implemented as +// noder. + +// SetNodes implements the Noder interface. +func (c *cluster) SetNodes(nodes []*topology.Node) {} + +// AppendNode implements the Noder interface. +func (c *cluster) AppendNode(node *topology.Node) {} + +// RemoveNode implements the Noder interface. +func (c *cluster) RemoveNode(nodeID string) bool { + return false +} + +// SetNodeState implements the Noder interface. +func (c *cluster) SetNodeState(nodeID string, state string) {} + +/////////////////////////////////////////// + func (t *Topology) GetNodeIDs() []string { return t.nodeIDs } diff --git a/fragment.go b/fragment.go index d87171807..d70b4b442 100644 --- a/fragment.go +++ b/fragment.go @@ -3556,8 +3556,7 @@ func (s *fragmentSyncer) syncFragment() error { defer span.Finish() // Create a snapshot of the cluster to use for node/partition calculations. - // TODO: this needs to use Cluster.noder once that has been implemented. - snap := topology.NewClusterSnapshot(topology.NewLocalNoder(s.Cluster.Nodes()), s.Cluster.Hasher, s.Cluster.ReplicaN) + snap := topology.NewClusterSnapshot(s.Cluster.noder, s.Cluster.Hasher, s.Cluster.ReplicaN) // Determine replica set. nodes := snap.ShardNodes(s.Fragment.index(), s.Fragment.shard) @@ -3677,8 +3676,7 @@ func (s *fragmentSyncer) syncBlockFromPrimary(id int) error { f := s.Fragment // Create a snapshot of the cluster to use for node/partition calculations. - // TODO: this needs to use Cluster.noder once that has been implemented. - snap := topology.NewClusterSnapshot(topology.NewLocalNoder(s.Cluster.Nodes()), s.Cluster.Hasher, s.Cluster.ReplicaN) + snap := topology.NewClusterSnapshot(s.Cluster.noder, s.Cluster.Hasher, s.Cluster.ReplicaN) // Determine replica set. Return early if this is not // the primary node. @@ -3730,8 +3728,7 @@ func (s *fragmentSyncer) syncBlock(id int) error { f := s.Fragment // Create a snapshot of the cluster to use for node/partition calculations. - // TODO: this needs to use Cluster.noder once that has been implemented. - snap := topology.NewClusterSnapshot(topology.NewLocalNoder(s.Cluster.Nodes()), s.Cluster.Hasher, s.Cluster.ReplicaN) + snap := topology.NewClusterSnapshot(s.Cluster.noder, s.Cluster.Hasher, s.Cluster.ReplicaN) // Read pairs from each remote block. var uris []*pnet.URI