mirror of https://github.com/go-redis/redis.git
Merge pull request #387 from yyoshiki41/refactor/clusterNode
Remove Addr field from clusterNode
This commit is contained in:
commit
c70ddf4531
|
@ -13,7 +13,6 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type clusterNode struct {
|
type clusterNode struct {
|
||||||
Addr string
|
|
||||||
Client *Client
|
Client *Client
|
||||||
Latency time.Duration
|
Latency time.Duration
|
||||||
}
|
}
|
||||||
|
@ -152,7 +151,7 @@ func (c *ClusterClient) nodeByAddr(addr string) (*clusterNode, error) {
|
||||||
if !ok {
|
if !ok {
|
||||||
node = c.newNode(addr)
|
node = c.newNode(addr)
|
||||||
c.nodes[addr] = node
|
c.nodes[addr] = node
|
||||||
c.addrs = append(c.addrs, node.Addr)
|
c.addrs = append(c.addrs, addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
return node, nil
|
return node, nil
|
||||||
|
@ -162,7 +161,6 @@ func (c *ClusterClient) newNode(addr string) *clusterNode {
|
||||||
opt := c.opt.clientOptions()
|
opt := c.opt.clientOptions()
|
||||||
opt.Addr = addr
|
opt.Addr = addr
|
||||||
return &clusterNode{
|
return &clusterNode{
|
||||||
Addr: addr,
|
|
||||||
Client: NewClient(opt),
|
Client: NewClient(opt),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -313,7 +311,7 @@ func (c *ClusterClient) Process(cmd Cmder) error {
|
||||||
moved, ask, addr = errors.IsMoved(err)
|
moved, ask, addr = errors.IsMoved(err)
|
||||||
if moved || ask {
|
if moved || ask {
|
||||||
master, _ := c.slotMasterNode(slot)
|
master, _ := c.slotMasterNode(slot)
|
||||||
if moved && (master == nil || master.Addr != addr) {
|
if moved && (master == nil || master.Client.getAddr() != addr) {
|
||||||
c.lazyReloadSlots()
|
c.lazyReloadSlots()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -425,7 +423,7 @@ func (c *ClusterClient) reloadSlots() {
|
||||||
|
|
||||||
slots, err := node.Client.ClusterSlots().Result()
|
slots, err := node.Client.ClusterSlots().Result()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
internal.Logf("ClusterSlots on addr=%q failed: %s", node.Addr, err)
|
internal.Logf("ClusterSlots on addr=%q failed: %s", node.Client.getAddr(), err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
func (c *ClusterClient) SlotAddrs(slot int) []string {
|
func (c *ClusterClient) SlotAddrs(slot int) []string {
|
||||||
var addrs []string
|
var addrs []string
|
||||||
for _, n := range c.slotNodes(slot) {
|
for _, n := range c.slotNodes(slot) {
|
||||||
addrs = append(addrs, n.Addr)
|
addrs = append(addrs, n.Client.getAddr())
|
||||||
}
|
}
|
||||||
return addrs
|
return addrs
|
||||||
}
|
}
|
||||||
|
@ -51,22 +51,22 @@ var _ = Describe("ClusterClient", func() {
|
||||||
|
|
||||||
It("should update slots cache", func() {
|
It("should update slots cache", func() {
|
||||||
populate()
|
populate()
|
||||||
Expect(subject.slots[0][0].Addr).To(Equal("127.0.0.1:7000"))
|
Expect(subject.slots[0][0].Client.getAddr()).To(Equal("127.0.0.1:7000"))
|
||||||
Expect(subject.slots[0][1].Addr).To(Equal("127.0.0.1:7004"))
|
Expect(subject.slots[0][1].Client.getAddr()).To(Equal("127.0.0.1:7004"))
|
||||||
Expect(subject.slots[4095][0].Addr).To(Equal("127.0.0.1:7000"))
|
Expect(subject.slots[4095][0].Client.getAddr()).To(Equal("127.0.0.1:7000"))
|
||||||
Expect(subject.slots[4095][1].Addr).To(Equal("127.0.0.1:7004"))
|
Expect(subject.slots[4095][1].Client.getAddr()).To(Equal("127.0.0.1:7004"))
|
||||||
Expect(subject.slots[4096][0].Addr).To(Equal("127.0.0.1:7001"))
|
Expect(subject.slots[4096][0].Client.getAddr()).To(Equal("127.0.0.1:7001"))
|
||||||
Expect(subject.slots[4096][1].Addr).To(Equal("127.0.0.1:7005"))
|
Expect(subject.slots[4096][1].Client.getAddr()).To(Equal("127.0.0.1:7005"))
|
||||||
Expect(subject.slots[8191][0].Addr).To(Equal("127.0.0.1:7001"))
|
Expect(subject.slots[8191][0].Client.getAddr()).To(Equal("127.0.0.1:7001"))
|
||||||
Expect(subject.slots[8191][1].Addr).To(Equal("127.0.0.1:7005"))
|
Expect(subject.slots[8191][1].Client.getAddr()).To(Equal("127.0.0.1:7005"))
|
||||||
Expect(subject.slots[8192][0].Addr).To(Equal("127.0.0.1:7002"))
|
Expect(subject.slots[8192][0].Client.getAddr()).To(Equal("127.0.0.1:7002"))
|
||||||
Expect(subject.slots[8192][1].Addr).To(Equal("127.0.0.1:7006"))
|
Expect(subject.slots[8192][1].Client.getAddr()).To(Equal("127.0.0.1:7006"))
|
||||||
Expect(subject.slots[12287][0].Addr).To(Equal("127.0.0.1:7002"))
|
Expect(subject.slots[12287][0].Client.getAddr()).To(Equal("127.0.0.1:7002"))
|
||||||
Expect(subject.slots[12287][1].Addr).To(Equal("127.0.0.1:7006"))
|
Expect(subject.slots[12287][1].Client.getAddr()).To(Equal("127.0.0.1:7006"))
|
||||||
Expect(subject.slots[12288][0].Addr).To(Equal("127.0.0.1:7003"))
|
Expect(subject.slots[12288][0].Client.getAddr()).To(Equal("127.0.0.1:7003"))
|
||||||
Expect(subject.slots[12288][1].Addr).To(Equal("127.0.0.1:7007"))
|
Expect(subject.slots[12288][1].Client.getAddr()).To(Equal("127.0.0.1:7007"))
|
||||||
Expect(subject.slots[16383][0].Addr).To(Equal("127.0.0.1:7003"))
|
Expect(subject.slots[16383][0].Client.getAddr()).To(Equal("127.0.0.1:7003"))
|
||||||
Expect(subject.slots[16383][1].Addr).To(Equal("127.0.0.1:7007"))
|
Expect(subject.slots[16383][1].Client.getAddr()).To(Equal("127.0.0.1:7007"))
|
||||||
Expect(subject.addrs).To(Equal([]string{
|
Expect(subject.addrs).To(Equal([]string{
|
||||||
"127.0.0.1:6379",
|
"127.0.0.1:6379",
|
||||||
"127.0.0.1:7003",
|
"127.0.0.1:7003",
|
||||||
|
|
6
redis.go
6
redis.go
|
@ -24,7 +24,7 @@ type baseClient struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *baseClient) String() string {
|
func (c *baseClient) String() string {
|
||||||
return fmt.Sprintf("Redis<%s db:%d>", c.opt.Addr, c.opt.DB)
|
return fmt.Sprintf("Redis<%s db:%d>", c.getAddr(), c.opt.DB)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *baseClient) conn() (*pool.Conn, bool, error) {
|
func (c *baseClient) conn() (*pool.Conn, bool, error) {
|
||||||
|
@ -140,6 +140,10 @@ func (c *baseClient) Close() error {
|
||||||
return retErr
|
return retErr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *baseClient) getAddr() string {
|
||||||
|
return c.opt.Addr
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Client is a Redis client representing a pool of zero or more
|
// Client is a Redis client representing a pool of zero or more
|
||||||
|
|
Loading…
Reference in New Issue