Skip to content

Commit cddef0b

Browse files
committed
RHINENG-19880: move deleted system cleanup to background tasks
refactor deleted system pruning from immediate event processing to asynchronous background task
1 parent ac1b2be commit cddef0b

3 files changed

Lines changed: 22 additions & 6 deletions

File tree

listener/events.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,5 @@ func HandleDelete(event mqueue.PlatformEvent) error {
102102
utils.LogInfo("inventoryID", event.ID, "count", query.RowsAffected, "Systems deleted")
103103
eventMsgsReceivedCnt.WithLabelValues(EventDelete, ReceivedSuccess).Inc()
104104

105-
err = database.DB.
106-
Delete(&models.DeletedSystem{}, "when_deleted < ?", time.Now().Add(-deletionThreshold)).Error
107-
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
108-
utils.LogWarn("inventoryID", event.ID, WarnNoRowsModified)
109-
return nil
110-
}
111105
return nil
112106
}

tasks/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package tasks
22

33
import (
44
"app/base/utils"
5+
"time"
56

67
log "github.com/sirupsen/logrus"
78
)
@@ -39,4 +40,6 @@ var (
3940
// How ofter run full vmaas sync, 7 days by default
4041
FullSyncCadence = utils.PodConfig.GetInt("full_sync_cadence", 24*7)
4142
MaxChangedPackages = utils.PodConfig.GetInt("max_changed_packages", 30000)
43+
// prune deleted_system table records older than threshold
44+
DeletedSystemsThreshold = time.Hour * time.Duration(utils.PodConfig.GetInt("system_delete_hrs", 4))
4245
)

tasks/system_culling/system_culling.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package system_culling
22

33
import (
4+
"app/base/models"
45
"app/base/utils"
56
"app/tasks"
7+
"time"
68

79
"github.com/pkg/errors"
810
"gorm.io/gorm"
@@ -27,6 +29,13 @@ func runSystemCulling() {
2729
utils.LogInfo("nMarked", nMarked, "Stale systems marked")
2830
staleSystemsMarkedCnt.Add(float64(nMarked))
2931

32+
// pruning deleted_system
33+
nPruned, err := pruneDeletedSystems(tx, tasks.DeleteCulledSystemsLimit)
34+
if err != nil {
35+
return errors.Wrap(err, "Prune deleted_systems")
36+
}
37+
utils.LogInfo("nPruned", nPruned, "Deleted_systems items pruned")
38+
3039
return nil
3140
})
3241

@@ -59,3 +68,13 @@ func markSystemsStale(tx *gorm.DB, markedLimit int) (nMarked int, err error) {
5968

6069
return nMarked, err
6170
}
71+
72+
func pruneDeletedSystems(tx *gorm.DB, limitDeleted int) (int64, error) {
73+
// postgres delete does not support limit
74+
subQ := tx.Model(&models.DeletedSystem{}).
75+
Where("when_deleted < ?", time.Now().Add(-tasks.DeletedSystemsThreshold)).
76+
Limit(limitDeleted).
77+
Select("inventory_id")
78+
query := tx.Delete(&models.DeletedSystem{}, "inventory_id in (?)", subQ)
79+
return query.RowsAffected, query.Error
80+
}

0 commit comments

Comments
 (0)