From c47a48a50b2d9a11165bfe4082c8938e4339fafd Mon Sep 17 00:00:00 2001 From: jkoberg Date: Wed, 4 Oct 2023 14:43:10 +0200 Subject: [PATCH] delete outdated userlog events Signed-off-by: jkoberg --- changelog/unreleased/bump-reva.md | 1 + .../unreleased/delete-outdated-userlog-events.md | 5 +++++ services/userlog/pkg/service/http.go | 15 +++++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 changelog/unreleased/delete-outdated-userlog-events.md diff --git a/changelog/unreleased/bump-reva.md b/changelog/unreleased/bump-reva.md index 5052a056b..5751ff4e1 100644 --- a/changelog/unreleased/bump-reva.md +++ b/changelog/unreleased/bump-reva.md @@ -6,3 +6,4 @@ https://github.com/owncloud/ocis/pull/7138 https://github.com/owncloud/ocis/pull/6427 https://github.com/owncloud/ocis/pull/7178 https://github.com/owncloud/ocis/pull/7217 +https://github.com/owncloud/ocis/pull/7410 diff --git a/changelog/unreleased/delete-outdated-userlog-events.md b/changelog/unreleased/delete-outdated-userlog-events.md new file mode 100644 index 000000000..df0ea8e9c --- /dev/null +++ b/changelog/unreleased/delete-outdated-userlog-events.md @@ -0,0 +1,5 @@ +Bugfix: Delete outdated userlog events + +Userlog will now delete events when the user has no longer access to the underlying resource + +https://github.com/owncloud/ocis/pull/7410 diff --git a/services/userlog/pkg/service/http.go b/services/userlog/pkg/service/http.go index 0d13f1c81..b869d3e15 100644 --- a/services/userlog/pkg/service/http.go +++ b/services/userlog/pkg/service/http.go @@ -61,6 +61,7 @@ func (ul *UserlogService) HandleGetEvents(w http.ResponseWriter, r *http.Request conv := NewConverter(ctx, r.Header.Get(HeaderAcceptLanguage), gwc, ul.cfg.Service.Name, ul.cfg.TranslationPath) + var outdatedEvents []string resp := GetEventResponseOC10{} for _, e := range evs { etype, ok := ul.registeredEvents[e.Type] @@ -77,6 +78,10 @@ func (ul *UserlogService) HandleGetEvents(w http.ResponseWriter, r *http.Request noti, err := conv.ConvertEvent(e.Id, einterface) if err != nil { + if utils.IsErrNotFound(err) || utils.IsErrPermissionDenied(err) { + outdatedEvents = append(outdatedEvents, e.Id) + continue + } ul.log.Error().Err(err).Str("eventid", e.Id).Str("eventtype", e.Type).Msg("failed to convert event") continue } @@ -84,6 +89,16 @@ func (ul *UserlogService) HandleGetEvents(w http.ResponseWriter, r *http.Request resp.OCS.Data = append(resp.OCS.Data, noti) } + // delete outdated events asynchronously + if len(outdatedEvents) > 0 { + go func() { + err := ul.DeleteEvents(u.GetId().GetOpaqueId(), outdatedEvents) + if err != nil { + ul.log.Error().Err(err).Msg("failed to delete events") + } + }() + } + glevs, err := ul.GetGlobalEvents(ctx) if err != nil { ul.log.Error().Err(err).Int("returned statuscode", http.StatusInternalServerError).Msg("get global events failed")