From e26c7683d2b5b5b5cb305107f4117d666eb1a201 Mon Sep 17 00:00:00 2001 From: Jakub Date: Mon, 31 Jul 2023 13:52:39 +0200 Subject: [PATCH] fix(GODT-2822): event loop behaviour on 429. --- internal/user/sync_downloader.go | 9 +++++++++ internal/user/user.go | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/user/sync_downloader.go b/internal/user/sync_downloader.go index 0084ab73..00d99be1 100644 --- a/internal/user/sync_downloader.go +++ b/internal/user/sync_downloader.go @@ -379,3 +379,12 @@ func is429Error(err error) bool { return false } + +func is429Or5XXError(err error) bool { + var apiErr *proton.APIError + if errors.As(err, &apiErr) { + return apiErr.Status == 429 || apiErr.Status >= 500 + } + + return false +} diff --git a/internal/user/user.go b/internal/user/user.go index 6ae06287..1c70c9f6 100644 --- a/internal/user/user.go +++ b/internal/user/user.go @@ -778,7 +778,7 @@ func (user *User) doEventPoll(ctx context.Context) error { } // If the error is a server-side issue, return error to retry later. - if apiErr := new(proton.APIError); errors.As(err, &apiErr) && apiErr.Status >= 500 { + if is429Or5XXError(err) { return fmt.Errorf("failed to handle event due to server error: %w", err) }