本文整理匯總了Golang中labix/org/v2/mgo.Session.Refresh方法的典型用法代碼示例。如果您正苦於以下問題:Golang Session.Refresh方法的具體用法?Golang Session.Refresh怎麽用?Golang Session.Refresh使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類labix/org/v2/mgo.Session
的用法示例。
在下文中一共展示了Session.Refresh方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: 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
}