type MgoSrc struct { *mgo.Session } var ( connGcSecond = time.Duration(config.MGO_CONN_GC_SECOND) * 1e9 session *mgo.Session err error MgoPool = pool.ClassicPool( config.MGO_CONN_CAP, config.MGO_CONN_CAP/5, func() (pool.Src, error) { // if err != nil || session.Ping() != nil { // session, err = newSession() // } return &MgoSrc{session.Clone()}, err }, connGcSecond) ) func Refresh() { session, err = mgo.Dial(config.MGO_CONN_STR) if err != nil { logs.Log.Error("MongoDB:%v\n", err) } else if err = session.Ping(); err != nil { logs.Log.Error("MongoDB:%v\n", err) } else { session.SetPoolLimit(config.MGO_CONN_CAP) } }