retry to send alert to plugin channel if it fails (#1530)

This commit is contained in:
blotus 2022-05-17 22:57:15 +08:00 committed by GitHub
parent c2b298c93a
commit 39f7e38444
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -99,11 +99,16 @@ func FormatAlerts(result []*ent.Alert) models.AddAlertsRequest {
func (c *Controller) sendAlertToPluginChannel(alert *models.Alert, profileID uint) {
if c.PluginChannel != nil {
select {
case c.PluginChannel <- csplugin.ProfileAlert{ProfileID: uint(profileID), Alert: alert}:
log.Debugf("alert sent to Plugin channel")
default:
log.Warningf("Cannot send alert to Plugin channel")
RETRY:
for try := 0; try < 3; try++ {
select {
case c.PluginChannel <- csplugin.ProfileAlert{ProfileID: uint(profileID), Alert: alert}:
log.Debugf("alert sent to Plugin channel")
break RETRY
default:
log.Warningf("Cannot send alert to Plugin channel (try: %d)", try)
time.Sleep(time.Millisecond * 50)
}
}
}
}