Show update failed notification only after some failed tries
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/safing/portbase/database"
|
"github.com/safing/portbase/database"
|
||||||
@@ -209,6 +210,8 @@ func DisableUpdateSchedule() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var updateFailedCnt = new(atomic.Int32)
|
||||||
|
|
||||||
func checkForUpdates(ctx context.Context) (err error) {
|
func checkForUpdates(ctx context.Context) (err error) {
|
||||||
if !forceUpdate.SetToIf(true, false) && !enableUpdates() {
|
if !forceUpdate.SetToIf(true, false) && !enableUpdates() {
|
||||||
log.Warningf("updates: automatic updates are disabled")
|
log.Warningf("updates: automatic updates are disabled")
|
||||||
@@ -216,7 +219,9 @@ func checkForUpdates(ctx context.Context) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
|
// Resolve any error and and send succes notification.
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
updateFailedCnt.Store(0)
|
||||||
log.Infof("updates: successfully checked for updates")
|
log.Infof("updates: successfully checked for updates")
|
||||||
module.Resolve(updateFailed)
|
module.Resolve(updateFailed)
|
||||||
notifications.Notify(¬ifications.Notification{
|
notifications.Notify(¬ifications.Notification{
|
||||||
@@ -232,7 +237,14 @@ func checkForUpdates(ctx context.Context) (err error) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
} else {
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Log error in any case.
|
||||||
|
log.Errorf("updates: check failed: %s", err)
|
||||||
|
|
||||||
|
// Do not alert user if update failed for only a few times.
|
||||||
|
if updateFailedCnt.Add(1) > 3 {
|
||||||
notifications.NotifyWarn(
|
notifications.NotifyWarn(
|
||||||
updateFailed,
|
updateFailed,
|
||||||
"Update Check Failed",
|
"Update Check Failed",
|
||||||
|
|||||||
Reference in New Issue
Block a user