From 7e7bd993a1d403333f5ef1ab5a6c214515a59f4c Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Tue, 6 Jun 2023 13:15:33 +0000 Subject: [PATCH] chore(avs): make backround avs updates more robust --- messages/uniworx/categories/settings/de-de-formal.msg | 3 ++- messages/uniworx/categories/settings/en-eu.msg | 3 ++- src/Jobs/Handler/SynchroniseAvs.hs | 8 ++++++-- templates/profileData.hamlet | 6 +++++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/messages/uniworx/categories/settings/de-de-formal.msg b/messages/uniworx/categories/settings/de-de-formal.msg index 189f226e5..5d5886061 100644 --- a/messages/uniworx/categories/settings/de-de-formal.msg +++ b/messages/uniworx/categories/settings/de-de-formal.msg @@ -91,8 +91,9 @@ BtnResetTokens: Authorisierungs-Tokens invalidieren TokensLastReset: Tokens zuletzt invalidiert ProfileNever: Nie -ProfileLastLdapSynchronisation: Letzte LDAP-Synchronisation ProfileLdapPrimaryKey: LDAP-Primärschlüssel +ProfileLastLdapSynchronisation: Letzte LDAP-Synchronisation +ProfileLastAvsSynchronisation: Letzte AVS-Synchronisation NotificationSettingsUpdate: Benachrichtigungs-Einstellungen erfolgreich gespeichert NotificationSettingsHeading displayName@Text: Benachrichtigungs-Einstellungen für #{displayName} diff --git a/messages/uniworx/categories/settings/en-eu.msg b/messages/uniworx/categories/settings/en-eu.msg index 6dbf5dd95..ec30510e6 100644 --- a/messages/uniworx/categories/settings/en-eu.msg +++ b/messages/uniworx/categories/settings/en-eu.msg @@ -91,8 +91,9 @@ BtnResetTokens: Invalidate tokens TokensLastReset: Tokens last reset ProfileNever: Never -ProfileLastLdapSynchronisation: Last LDAP synchronisation ProfileLdapPrimaryKey: LDAP primary key +ProfileLastLdapSynchronisation: Last LDAP synchronisation +ProfileLastAvsSynchronisation: Last AVS synchronisation NotificationSettingsUpdate: Successfully updated notification settings NotificationSettingsHeading displayName: Notification settings for #{displayName} diff --git a/src/Jobs/Handler/SynchroniseAvs.hs b/src/Jobs/Handler/SynchroniseAvs.hs index 5fd2807dd..04f698c30 100644 --- a/src/Jobs/Handler/SynchroniseAvs.hs +++ b/src/Jobs/Handler/SynchroniseAvs.hs @@ -15,7 +15,6 @@ import Jobs.Queue import Handler.Utils.Avs --- TODO: JobSynchroniseAllAvs is not yet scheduled in Crontab dispatchJobSynchroniseAvs :: Natural -> Natural -> Natural -> Maybe UTCTime -> JobHandler UniWorX dispatchJobSynchroniseAvs numIterations epoch iteration pause = JobHandlerAtomic . runConduit $ @@ -43,7 +42,12 @@ workJobSynchroniseAvs eauid pause = JobHandlerException $ do Nothing -> return () -- do not create new newers in this background job, only update existing Just Entity{entityVal=UserAvs{..}} | maybe False (userAvsLastSynch >=) pause -> return () -- we just updated this one within the given limit - | otherwise -> void $ upsertAvsUserById userAvsPersonId -- updates UserAvsLAstSynch + | otherwise -> catch (void $ upsertAvsUserById userAvsPersonId) -- updates UserAvsLastSynch + (\case + AvsInterfaceUnavailable -> return () -- ignore and retry later + AvsUserUnknownByAvs _ -> return () -- ignore for users no longer listed in AVS + otherExc -> throwM otherExc + ) dispatchJobSynchroniseAvsId :: AvsPersonId -> Maybe UTCTime -> JobHandler UniWorX dispatchJobSynchroniseAvsId = workJobSynchroniseAvs . Left diff --git a/templates/profileData.hamlet b/templates/profileData.hamlet index 0c9783fd4..0e0ae1825 100644 --- a/templates/profileData.hamlet +++ b/templates/profileData.hamlet @@ -18,8 +18,12 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
_{MsgAvsPersonNo} ^{messageTooltip tooltipAvsPersNo} +
+ #{view _userAvsNoPerson avs} +
+ _{MsgProfileLastAvsSynchronisation}
- #{view _userAvsNoPerson avs} + ^{formatTimeW SelFormatDateTime (view _userAvsLastSynch avs)}
_{MsgNameSet}