MCPcopy
hub / github.com/CodisLabs/codis / slavesCommand

Method slavesCommand

pkg/utils/redis/sentinel.go:241–279  ·  view source on GitHub ↗
(client *Client, names []string)

Source from the content-addressed store, hash-verified

239}
240
241func (s *Sentinel) slavesCommand(client *Client, names []string) (map[string][]map[string]string, error) {
242 exists, err := s.existsCommand(client, names)
243 if err != nil {
244 return nil, err
245 }
246 go func() {
247 var pending int
248 for _, name := range names {
249 if !exists[name] {
250 continue
251 }
252 pending++
253 client.Send("SENTINEL", "slaves", name)
254 }
255 if pending != 0 {
256 client.Flush()
257 }
258 }()
259 results := make(map[string][]map[string]string, len(names))
260 for _, name := range names {
261 if !exists[name] {
262 continue
263 }
264 values, err := redigo.Values(client.Receive())
265 if err != nil {
266 return nil, errors.Trace(err)
267 }
268 var slaves []map[string]string
269 for i := range values {
270 m, err := redigo.StringMap(values[i], nil)
271 if err != nil {
272 return nil, errors.Trace(err)
273 }
274 slaves = append(slaves, m)
275 }
276 results[name] = slaves
277 }
278 return results, nil
279}
280
281func (s *Sentinel) mastersCommand(client *Client) (map[int]map[string]string, error) {
282 values, err := redigo.Values(client.Do("SENTINEL", "masters"))

Callers 1

Calls 5

existsCommandMethod · 0.95
SendMethod · 0.80
ValuesMethod · 0.80
ReceiveMethod · 0.80
FlushMethod · 0.45

Tested by

no test coverage detected