MCPcopy Create free account
hub / github.com/apache/kvrocks-controller / ToSlotsString

Method ToSlotsString

store/cluster_shard.go:252–289  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

250}
251
252func (shard *Shard) ToSlotsString() (string, error) {
253 var builder strings.Builder
254 masterNodeIndex := -1
255 for i, node := range shard.Nodes {
256 if node.IsMaster() {
257 masterNodeIndex = i
258 break
259 }
260 }
261 if masterNodeIndex == -1 {
262 return "", errors.New("missing master node")
263 }
264
265 for i, node := range shard.Nodes {
266 builder.WriteString(node.ID())
267 builder.WriteByte(' ')
268 builder.WriteString(strings.Replace(node.Addr(), ":", " ", 1))
269 builder.WriteByte(' ')
270 if i == masterNodeIndex {
271 builder.WriteString(RoleMaster)
272 builder.WriteByte(' ')
273 builder.WriteByte('-')
274 builder.WriteByte(' ')
275 for j, slotRange := range shard.SlotRanges {
276 builder.WriteString(slotRange.String())
277 if j != len(shard.SlotRanges)-1 {
278 builder.WriteByte(' ')
279 }
280 }
281 } else {
282 builder.WriteString(RoleSlave)
283 builder.WriteByte(' ')
284 builder.WriteString(shard.Nodes[masterNodeIndex].ID())
285 }
286 builder.WriteByte('\n')
287 }
288 return builder.String(), nil
289}
290
291// UnmarshalJSON unmarshal a Shard from JSON bytes,
292// it's required since Shard.Nodes is an interface slice.

Callers 1

ToSlotStringMethod · 0.80

Calls 4

IsMasterMethod · 0.65
IDMethod · 0.65
AddrMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected