GODT-2122: Handle check for updates failure

This commit is contained in:
James Houlahan
2022-11-19 13:18:43 +01:00
parent 1517dd81e6
commit 0ce0e4765b
3 changed files with 22 additions and 4 deletions

View File

@ -365,7 +365,7 @@ func (bridge *Bridge) init(tlsReporter TLSReporter) error {
version, err := bridge.updater.GetVersionInfo(ctx, bridge.api, bridge.vault.GetUpdateChannel()) version, err := bridge.updater.GetVersionInfo(ctx, bridge.api, bridge.vault.GetUpdateChannel())
if err != nil { if err != nil {
logrus.WithError(err).Error("Failed to check for updates") bridge.publish(events.UpdateCheckFailed{Error: err})
} else { } else {
bridge.handleUpdate(version) bridge.handleUpdate(version)
} }

View File

@ -111,3 +111,14 @@ type UpdateForced struct {
func (event UpdateForced) String() string { func (event UpdateForced) String() string {
return "UpdateForced" return "UpdateForced"
} }
// UpdateCheckFailed is published when the update check fails.
type UpdateCheckFailed struct {
eventBase
Error error
}
func (event UpdateCheckFailed) String() string {
return fmt.Sprintf("UpdateCheckFailed: Error: %s", event.Error)
}

View File

@ -504,17 +504,24 @@ func (s *Service) CheckUpdate(context.Context, *emptypb.Empty) (*emptypb.Empty,
go func() { go func() {
defer s.panicHandler.HandlePanic() defer s.panicHandler.HandlePanic()
updateCh, done := s.bridge.GetEvents(events.UpdateAvailable{}, events.UpdateNotAvailable{}) updateCh, done := s.bridge.GetEvents(
events.UpdateAvailable{},
events.UpdateNotAvailable{},
events.UpdateCheckFailed{},
)
defer done() defer done()
s.bridge.CheckForUpdates() s.bridge.CheckForUpdates()
switch (<-updateCh).(type) { switch (<-updateCh).(type) {
case events.UpdateNotAvailable:
_ = s.SendEvent(NewUpdateIsLatestVersionEvent())
case events.UpdateAvailable: case events.UpdateAvailable:
// ... this is handled by the main event loop // ... this is handled by the main event loop
case events.UpdateNotAvailable: case events.UpdateCheckFailed:
_ = s.SendEvent(NewUpdateIsLatestVersionEvent()) // ... maybe show an error? but do nothing for now
} }
_ = s.SendEvent(NewUpdateCheckFinishedEvent()) _ = s.SendEvent(NewUpdateCheckFinishedEvent())