delete outdated userlog events

Signed-off-by: jkoberg <jkoberg@owncloud.com>
This commit is contained in:
jkoberg
2023-10-04 16:37:44 +02:00
parent 6fb05986ed
commit c47a48a50b
3 changed files with 21 additions and 0 deletions
+1
View File
@@ -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
@@ -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
+15
View File
@@ -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")