| 449 | } |
| 450 | |
| 451 | func (c *ringSharding) GetByKey(key string) (*ringShard, error) { |
| 452 | key = hashtag.Key(key) |
| 453 | |
| 454 | c.mu.RLock() |
| 455 | defer c.mu.RUnlock() |
| 456 | |
| 457 | if c.closed { |
| 458 | return nil, pool.ErrClosed |
| 459 | } |
| 460 | |
| 461 | if c.numShard == 0 { |
| 462 | return nil, errRingShardsDown |
| 463 | } |
| 464 | |
| 465 | shardName := c.hash.Get(key) |
| 466 | if shardName == "" { |
| 467 | return nil, errRingShardsDown |
| 468 | } |
| 469 | return c.shards.m[shardName], nil |
| 470 | } |
| 471 | |
| 472 | func (c *ringSharding) GetByName(shardName string) (*ringShard, error) { |
| 473 | if shardName == "" { |