fix: better event loop error handling

This commit is contained in:
James Houlahan
2020-04-14 15:21:00 +02:00
committed by Jakub Cuth
parent aea816029f
commit 91ec7edc06
2 changed files with 18 additions and 18 deletions

View File

@ -394,7 +394,7 @@ func (loop *eventLoop) processLabels(eventLog *logrus.Entry, labels []*pmapi.Eve
return nil
}
func (loop *eventLoop) processMessages(eventLog *logrus.Entry, messages []*pmapi.EventMessage) (err error) {
func (loop *eventLoop) processMessages(eventLog *logrus.Entry, messages []*pmapi.EventMessage) (err error) { // nolint[funlen]
eventLog.Debug("Processing message change event")
for _, message := range messages {
@ -422,18 +422,23 @@ func (loop *eventLoop) processMessages(eventLog *logrus.Entry, messages []*pmapi
}
var msg *pmapi.Message
msg, err = loop.store.getMessageFromDB(message.ID)
if err == ErrNoSuchAPIID {
msgLog.WithError(err).Warning("Cannot get message from DB for updating. Trying fetch...")
msg, err = loop.store.fetchMessage(message.ID)
// If message does not exist anywhere, update event is probably old and off topic - skip it.
if err == ErrNoSuchAPIID {
msgLog.Warn("Skipping message update, because message does not exist nor in local DB or on API")
continue
if msg, err = loop.store.getMessageFromDB(message.ID); err != nil {
if err != ErrNoSuchAPIID {
return errors.Wrap(err, "failed to get message from DB for updating")
}
msgLog.WithError(err).Warning("Message was not present in DB. Trying fetch...")
if msg, err = loop.store.fetchMessage(message.ID); err != nil {
if err != pmapi.ErrAPINotReachable {
msgLog.WithError(err).Warn("Skipping message update because message exists neither in local DB nor on API")
err = nil
continue
}
return errors.Wrap(err, "failed to get message from API for updating")
}
}
if err != nil {
return errors.Wrap(err, "failed to get message from DB for updating")
}
updateMessage(msgLog, msg, message.Updated)