forked from Silverfish/proton-bridge
fix: better event loop error handling
This commit is contained in:
committed by
Jakub Cuth
parent
aea816029f
commit
91ec7edc06
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user