Merge pull request #1359 from gravitl/bugfix_v0.14.5_mq_connection

Bugfix v0.14.5 mq connection retries
This commit is contained in:
dcarns 2022-07-19 07:09:09 -04:00 committed by GitHub
commit e52fc87a68
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -262,22 +262,29 @@ func setupMQTT(cfg *config.ClientConfig, publish bool) (mqtt.Client, error) {
logger.Log(0, "detected broker connection lost for", cfg.Server.Server)
})
client := mqtt.NewClient(opts)
for token := client.Connect(); !token.WaitTimeout(30*time.Second) || token.Error() != nil; token = client.Connect() {
logger.Log(0, "unable to connect to broker, retrying ...")
var err error
if token.Error() == nil {
err = errors.New("connect timeout")
} else {
err = token.Error()
}
if err := checkBroker(cfg.Server.Server, cfg.Server.MQPort); err != nil {
return nil, err
}
logger.Log(0, "could not connect to broker", cfg.Server.Server, err.Error())
if strings.Contains(err.Error(), "connectex") || strings.Contains(err.Error(), "connect timeout") {
reRegisterWithServer(cfg)
var connecterr error
for count := 0; count < 3; count++ {
connecterr = nil
if token := client.Connect(); !token.WaitTimeout(30*time.Second) || token.Error() != nil {
logger.Log(0, "unable to connect to broker, retrying ...")
if token.Error() == nil {
connecterr = errors.New("connect timeout")
} else {
connecterr = token.Error()
}
if err := checkBroker(cfg.Server.Server, cfg.Server.MQPort); err != nil {
logger.Log(0, "could not connect to broker", cfg.Server.Server, err.Error())
}
}
}
if connecterr != nil {
reRegisterWithServer(cfg)
//try after re-registering
if token := client.Connect(); !token.WaitTimeout(30*time.Second) || token.Error() != nil {
return client, errors.New("unable to connect to broker")
}
}
return client, nil
}