mirror of https://github.com/go-redis/redis.git
Merge 49c7902daf
into f1ffb55c9a
This commit is contained in:
commit
4f739de1e2
|
@ -33,6 +33,7 @@ func BenchmarkPoolGetPut(b *testing.B) {
|
||||||
Dialer: dummyDialer,
|
Dialer: dummyDialer,
|
||||||
PoolSize: bm.poolSize,
|
PoolSize: bm.poolSize,
|
||||||
PoolTimeout: time.Second,
|
PoolTimeout: time.Second,
|
||||||
|
DialTimeout: 1 * time.Second,
|
||||||
ConnMaxIdleTime: time.Hour,
|
ConnMaxIdleTime: time.Hour,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -76,6 +77,7 @@ func BenchmarkPoolGetRemove(b *testing.B) {
|
||||||
Dialer: dummyDialer,
|
Dialer: dummyDialer,
|
||||||
PoolSize: bm.poolSize,
|
PoolSize: bm.poolSize,
|
||||||
PoolTimeout: time.Second,
|
PoolTimeout: time.Second,
|
||||||
|
DialTimeout: 1 * time.Second,
|
||||||
ConnMaxIdleTime: time.Hour,
|
ConnMaxIdleTime: time.Hour,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,7 @@ type Options struct {
|
||||||
|
|
||||||
PoolFIFO bool
|
PoolFIFO bool
|
||||||
PoolSize int
|
PoolSize int
|
||||||
|
DialTimeout time.Duration
|
||||||
PoolTimeout time.Duration
|
PoolTimeout time.Duration
|
||||||
MinIdleConns int
|
MinIdleConns int
|
||||||
MaxIdleConns int
|
MaxIdleConns int
|
||||||
|
@ -140,7 +141,10 @@ func (p *ConnPool) checkMinIdleConns() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *ConnPool) addIdleConn() error {
|
func (p *ConnPool) addIdleConn() error {
|
||||||
cn, err := p.dialConn(context.TODO(), true)
|
ctx, cancel := context.WithTimeout(context.Background(), p.cfg.DialTimeout)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
cn, err := p.dialConn(ctx, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -230,15 +234,19 @@ func (p *ConnPool) tryDial() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
conn, err := p.cfg.Dialer(context.Background())
|
ctx, cancel := context.WithTimeout(context.Background(), p.cfg.DialTimeout)
|
||||||
|
|
||||||
|
conn, err := p.cfg.Dialer(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
p.setLastDialError(err)
|
p.setLastDialError(err)
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
|
cancel()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic.StoreUint32(&p.dialErrorsNum, 0)
|
atomic.StoreUint32(&p.dialErrorsNum, 0)
|
||||||
_ = conn.Close()
|
_ = conn.Close()
|
||||||
|
cancel()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ var _ = Describe("ConnPool", func() {
|
||||||
Dialer: dummyDialer,
|
Dialer: dummyDialer,
|
||||||
PoolSize: 10,
|
PoolSize: 10,
|
||||||
PoolTimeout: time.Hour,
|
PoolTimeout: time.Hour,
|
||||||
|
DialTimeout: 1 * time.Second,
|
||||||
ConnMaxIdleTime: time.Millisecond,
|
ConnMaxIdleTime: time.Millisecond,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -46,6 +47,7 @@ var _ = Describe("ConnPool", func() {
|
||||||
},
|
},
|
||||||
PoolSize: 10,
|
PoolSize: 10,
|
||||||
PoolTimeout: time.Hour,
|
PoolTimeout: time.Hour,
|
||||||
|
DialTimeout: 1 * time.Second,
|
||||||
ConnMaxIdleTime: time.Millisecond,
|
ConnMaxIdleTime: time.Millisecond,
|
||||||
MinIdleConns: minIdleConns,
|
MinIdleConns: minIdleConns,
|
||||||
})
|
})
|
||||||
|
@ -129,6 +131,7 @@ var _ = Describe("MinIdleConns", func() {
|
||||||
PoolSize: poolSize,
|
PoolSize: poolSize,
|
||||||
MinIdleConns: minIdleConns,
|
MinIdleConns: minIdleConns,
|
||||||
PoolTimeout: 100 * time.Millisecond,
|
PoolTimeout: 100 * time.Millisecond,
|
||||||
|
DialTimeout: 1 * time.Second,
|
||||||
ConnMaxIdleTime: -1,
|
ConnMaxIdleTime: -1,
|
||||||
})
|
})
|
||||||
Eventually(func() int {
|
Eventually(func() int {
|
||||||
|
@ -306,6 +309,7 @@ var _ = Describe("race", func() {
|
||||||
Dialer: dummyDialer,
|
Dialer: dummyDialer,
|
||||||
PoolSize: 10,
|
PoolSize: 10,
|
||||||
PoolTimeout: time.Minute,
|
PoolTimeout: time.Minute,
|
||||||
|
DialTimeout: 1 * time.Second,
|
||||||
ConnMaxIdleTime: time.Millisecond,
|
ConnMaxIdleTime: time.Millisecond,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -336,6 +340,7 @@ var _ = Describe("race", func() {
|
||||||
PoolSize: 1000,
|
PoolSize: 1000,
|
||||||
MinIdleConns: 50,
|
MinIdleConns: 50,
|
||||||
PoolTimeout: 3 * time.Second,
|
PoolTimeout: 3 * time.Second,
|
||||||
|
DialTimeout: 1 * time.Second,
|
||||||
}
|
}
|
||||||
p := pool.NewConnPool(opt)
|
p := pool.NewConnPool(opt)
|
||||||
|
|
||||||
|
|
|
@ -518,6 +518,7 @@ func newConnPool(
|
||||||
PoolFIFO: opt.PoolFIFO,
|
PoolFIFO: opt.PoolFIFO,
|
||||||
PoolSize: opt.PoolSize,
|
PoolSize: opt.PoolSize,
|
||||||
PoolTimeout: opt.PoolTimeout,
|
PoolTimeout: opt.PoolTimeout,
|
||||||
|
DialTimeout: opt.DialTimeout,
|
||||||
MinIdleConns: opt.MinIdleConns,
|
MinIdleConns: opt.MinIdleConns,
|
||||||
MaxIdleConns: opt.MaxIdleConns,
|
MaxIdleConns: opt.MaxIdleConns,
|
||||||
MaxActiveConns: opt.MaxActiveConns,
|
MaxActiveConns: opt.MaxActiveConns,
|
||||||
|
|
Loading…
Reference in New Issue