mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 04:36:43 +00:00
More logs about event loop activity
This commit is contained in:
@ -6,6 +6,7 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/)
|
|||||||
|
|
||||||
### Added
|
### Added
|
||||||
* IMAP extension Unselect
|
* IMAP extension Unselect
|
||||||
|
* More logs about event loop activity
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
* GODT-225 Do not send an EXISTS reposnse after EXPUNGE or when nothing changed (fixes rebuild of mailboxes in Outlook for Mac)
|
* GODT-225 Do not send an EXISTS reposnse after EXPUNGE or when nothing changed (fixes rebuild of mailboxes in Outlook for Mac)
|
||||||
|
|||||||
@ -38,6 +38,8 @@ type eventLoop struct {
|
|||||||
isRunning bool
|
isRunning bool
|
||||||
hasInternet bool
|
hasInternet bool
|
||||||
|
|
||||||
|
pollCounter int
|
||||||
|
|
||||||
log *logrus.Entry
|
log *logrus.Entry
|
||||||
|
|
||||||
store *Store
|
store *Store
|
||||||
@ -70,7 +72,7 @@ func (loop *eventLoop) IsRunning() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (loop *eventLoop) setFirstEventID() (err error) {
|
func (loop *eventLoop) setFirstEventID() (err error) {
|
||||||
loop.log.Trace("Setting first event ID")
|
loop.log.Info("Setting first event ID")
|
||||||
|
|
||||||
event, err := loop.apiClient.GetEvent("")
|
event, err := loop.apiClient.GetEvent("")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -104,7 +106,7 @@ func (loop *eventLoop) stop() {
|
|||||||
|
|
||||||
select {
|
select {
|
||||||
case <-loop.notifyStopCh:
|
case <-loop.notifyStopCh:
|
||||||
loop.log.Info("Event loop was stopped")
|
loop.log.Warn("Event loop was stopped")
|
||||||
case <-time.After(1 * time.Second):
|
case <-time.After(1 * time.Second):
|
||||||
loop.log.Warn("Timed out waiting for event loop to stop")
|
loop.log.Warn("Timed out waiting for event loop to stop")
|
||||||
}
|
}
|
||||||
@ -127,7 +129,7 @@ func (loop *eventLoop) start() { // nolint[funlen]
|
|||||||
|
|
||||||
loop.log.WithField("lastEventID", loop.currentEventID).Info("Subscribed to events")
|
loop.log.WithField("lastEventID", loop.currentEventID).Info("Subscribed to events")
|
||||||
defer func() {
|
defer func() {
|
||||||
loop.log.WithField("lastEventID", loop.currentEventID).Info("Subscription stopped")
|
loop.log.WithField("lastEventID", loop.currentEventID).Warn("Subscription stopped")
|
||||||
}()
|
}()
|
||||||
|
|
||||||
t := time.NewTicker(pollInterval)
|
t := time.NewTicker(pollInterval)
|
||||||
@ -194,7 +196,9 @@ func (loop *eventLoop) isBeforeFirstStart() bool {
|
|||||||
// (disk). It will filter out in defer all errors except invalid token error.
|
// (disk). It will filter out in defer all errors except invalid token error.
|
||||||
// Invalid error will be returned and stop the event loop.
|
// Invalid error will be returned and stop the event loop.
|
||||||
func (loop *eventLoop) processNextEvent() (more bool, err error) { // nolint[funlen]
|
func (loop *eventLoop) processNextEvent() (more bool, err error) { // nolint[funlen]
|
||||||
l := loop.log.WithField("currentEventID", loop.currentEventID)
|
l := loop.log.
|
||||||
|
WithField("currentEventID", loop.currentEventID).
|
||||||
|
WithField("pollCounter", loop.pollCounter)
|
||||||
|
|
||||||
// We only want to consider invalid tokens as real errors because all other errors might fix themselves eventually
|
// We only want to consider invalid tokens as real errors because all other errors might fix themselves eventually
|
||||||
// (e.g. no internet, ulimit reached etc.)
|
// (e.g. no internet, ulimit reached etc.)
|
||||||
@ -222,12 +226,19 @@ func (loop *eventLoop) processNextEvent() (more bool, err error) { // nolint[fun
|
|||||||
|
|
||||||
// All errors except Invalid Token (which is not possible to recover from) are ignored.
|
// All errors except Invalid Token (which is not possible to recover from) are ignored.
|
||||||
if err != nil && !errUnauthorized && errors.Cause(err) != pmapi.ErrInvalidToken {
|
if err != nil && !errUnauthorized && errors.Cause(err) != pmapi.ErrInvalidToken {
|
||||||
l.WithError(err).Trace("Error skipped")
|
l.WithError(err).Error("Error skipped")
|
||||||
err = nil
|
err = nil
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
l.Trace("Polling next event")
|
l.Trace("Polling next event")
|
||||||
|
// Log activity of event loop each 100. poll which means approx. 28
|
||||||
|
// lines per day
|
||||||
|
if loop.pollCounter%100 == 0 {
|
||||||
|
l.Info("Polling next event")
|
||||||
|
}
|
||||||
|
loop.pollCounter++
|
||||||
|
|
||||||
var event *pmapi.Event
|
var event *pmapi.Event
|
||||||
if event, err = loop.apiClient.GetEvent(loop.currentEventID); err != nil {
|
if event, err = loop.apiClient.GetEvent(loop.currentEventID); err != nil {
|
||||||
return false, errors.Wrap(err, "failed to get event")
|
return false, errors.Wrap(err, "failed to get event")
|
||||||
@ -245,6 +256,7 @@ func (loop *eventLoop) processNextEvent() (more bool, err error) { // nolint[fun
|
|||||||
}
|
}
|
||||||
|
|
||||||
if loop.currentEventID != event.EventID {
|
if loop.currentEventID != event.EventID {
|
||||||
|
l.WithField("newID", event.EventID).Info("New event processed")
|
||||||
// In case new event ID cannot be saved to cache, we update it in event loop
|
// In case new event ID cannot be saved to cache, we update it in event loop
|
||||||
// anyway and continue processing new events to prevent the loop from repeatedly
|
// anyway and continue processing new events to prevent the loop from repeatedly
|
||||||
// processing the same event.
|
// processing the same event.
|
||||||
|
|||||||
Reference in New Issue
Block a user