本文整理汇总了Golang中labix/org/v2/mgo.Session.Ping方法的典型用法代码示例。如果您正苦于以下问题:Golang Session.Ping方法的具体用法?Golang Session.Ping怎么用?Golang Session.Ping使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类labix/org/v2/mgo.Session
的用法示例。
在下文中一共展示了Session.Ping方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: FetchStatus
func FetchStatus(s *Status, ms *mgo.Session, enc encoder.Encoder, r *http.Request) (int, []byte) {
s.Log["MongoDB"] = NewLog(true, "")
if err := ms.Ping(); err != nil {
s.Log["MongoDB"] = NewLog(false, err.Error())
}
return http.StatusOK, encoder.Must(enc.Encode(s))
}
示例2: newServer
func newServer() (*coretesting.MgoInstance, error) {
inst := &coretesting.MgoInstance{Params: []string{"--replSet", name}}
err := inst.Start(true)
if err != nil {
return nil, fmt.Errorf("Error starting mongo server: %s", err.Error())
}
// by dialing right now, we'll wait until it's running
strategy := utils.AttemptStrategy{Total: time.Second * 5, Delay: time.Millisecond * 100}
attempt := strategy.Start()
for attempt.Next() {
var session *mgo.Session
session, err = inst.DialDirect()
if err != nil {
err = fmt.Errorf("Error dialing mongo server %q: %s", inst.Addr(), err.Error())
} else {
session.SetMode(mgo.Monotonic, true)
err = session.Ping()
if err != nil {
err = fmt.Errorf("Error pinging mongo server %q: %s", inst.Addr(), err.Error())
}
session.Close()
}
if err == nil || !attempt.HasNext() {
break
}
}
return inst, err
}
示例3: checkServerStatus
// TODO remove dead session from freecon
func (this *Client) checkServerStatus(wg *sync.WaitGroup, sess *mgo.Session) {
defer wg.Done()
err := sess.Ping()
if err != nil {
log.Error("mongodb err: %v %s", sess.LiveServers(), err)
sess.Close()
}
}
示例4: IsSessionClosed
// test whether session closed
//
// PS: sometimes it's not corrected
func IsSessionClosed(s *mgo.Session) (res bool) {
defer func() {
if err := recover(); err != nil {
log.Print("[MGO2_IS_SESSION_CLOSED] check session closed panic:", err)
}
}()
res = true
return s.Ping() != nil
}
示例5: checkServerStatus
func (this *Client) checkServerStatus(wg *sync.WaitGroup, sess *mgo.Session) {
defer wg.Done()
err := sess.Ping()
if err != nil {
// TODO show mongodb uri in log
log.Error("mongodb killed for: %s", err)
sess.Close()
this.killConn(sess)
}
}
示例6: applyRelSetConfig
// applyRelSetConfig applies the new config to the mongo session. It also logs
// what the changes are. It checks if the replica set changes cause the DB
// connection to be dropped. If so, it Refreshes the session and tries to Ping
// again.
func applyRelSetConfig(cmd string, session *mgo.Session, oldconfig, newconfig *Config) error {
logger.Debugf("%s() changing replica set\nfrom %s\n to %s",
cmd, fmtConfigForLog(oldconfig), fmtConfigForLog(newconfig))
err := session.Run(bson.D{{"replSetReconfig", newconfig}}, nil)
// We will only try to Ping 2 times
for i := 0; i < 2; i++ {
if err == io.EOF {
// If the primary changes due to replSetReconfig, then all
// current connections are dropped.
// Refreshing should fix us up.
logger.Debugf("got EOF while running %s(), calling session.Refresh()", cmd)
session.Refresh()
} else if err != nil {
// For all errors that aren't EOF, return immediately
return err
}
// err is either nil or EOF and we called Refresh, so Ping to
// make sure we're actually connected
err = session.Ping()
// Change the command because it is the new command we ran
cmd = "Ping"
}
return err
}
示例7: checkSession
func checkSession(s *mgo.Session) (err error) {
return s.Ping()
}