getOwner returns the owner and the original set of nodes without the owner.
(key string, nodes []*Node)
| 180 | |
| 181 | // getOwner returns the owner and the original set of nodes without the owner. |
| 182 | func getOwner(key string, nodes []*Node) (*Node, []*Node) { |
| 183 | if len(nodes) == 0 { |
| 184 | return nil, nil |
| 185 | } |
| 186 | |
| 187 | // Get a copy of the ring and clear it. |
| 188 | r := nodes[0].ring.ringCopy() |
| 189 | for _, m := range r.(*consistentRing).ring.Members() { |
| 190 | r.remove(m) |
| 191 | } |
| 192 | |
| 193 | lookup := make(map[string]*Node, len(nodes)) |
| 194 | for _, n := range nodes { |
| 195 | lookup[n.name] = n |
| 196 | r.add(n.name) |
| 197 | } |
| 198 | |
| 199 | // Get the successor. |
| 200 | s := r.successor(key) |
| 201 | owner := lookup[s] |
| 202 | |
| 203 | var followers []*Node |
| 204 | for name, node := range lookup { |
| 205 | if name != s { |
| 206 | followers = append(followers, node) |
| 207 | } |
| 208 | } |
| 209 | |
| 210 | return owner, followers |
| 211 | } |
| 212 | |
| 213 | func TestMarkDirtyValue(t *testing.T) { |
| 214 | nodes, err := connectedTestNodes(2, 2) |
no test coverage detected