v2: Add defensive pool check.

This commit is contained in:
Vladimir Mihailenco 2013-09-17 12:03:17 +03:00
parent 73b92efa94
commit 301d2f1353
2 changed files with 16 additions and 6 deletions

View File

@ -117,6 +117,10 @@ func (p *connPool) Get() (*conn, bool, error) {
} }
func (p *connPool) Put(cn *conn) error { func (p *connPool) Put(cn *conn) error {
if cn.Rd.Buffered() != 0 {
panic("pool: put connection with buffered data")
}
p.cond.L.Lock() p.cond.L.Lock()
cn.UsedAt = time.Now() cn.UsedAt = time.Now()
p.conns.PushFront(cn) p.conns.PushFront(cn)

View File

@ -27,19 +27,25 @@ func sortStrings(slice []string) []string {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
type RedisShutdownTest struct { type RedisConnectionTest struct {
opt *redis.Options
client *redis.Client client *redis.Client
} }
var _ = Suite(&RedisShutdownTest{}) var _ = Suite(&RedisConnectionTest{})
func (t *RedisShutdownTest) SetUpTest(c *C) { func (t *RedisConnectionTest) SetUpTest(c *C) {
t.client = redis.DialTCP(&redis.Options{ t.opt = &redis.Options{
Addr: redisAddr, Addr: redisAddr,
}) }
t.client = redis.DialTCP(t.opt)
} }
func (t *RedisShutdownTest) TestShutdown(c *C) { func (t *RedisConnectionTest) TearDownTest(c *C) {
c.Assert(t.client.Close(), IsNil)
}
func (t *RedisConnectionTest) TestShutdown(c *C) {
c.Skip("shutdowns server") c.Skip("shutdowns server")
shutdown := t.client.Shutdown() shutdown := t.client.Shutdown()