Skip to content

Commit 47f0efd

Browse files
yashmehrotramoshloopcoderabbitai[bot]
authored
fix: handle config scraper deletion/un-deletion and cleanup (#1749)
* fix: handle config scraper deletion/un-deletion and cleanup * chore: unset config_scraper deleted_at * chore: remove debug Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Moshe Immerman <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1 parent b44961e commit 47f0efd

File tree

3 files changed

+28
-5
lines changed

3 files changed

+28
-5
lines changed

api/v1/types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,4 +232,6 @@ var (
232232
DeletedReasonFromDeleteField ConfigDeleteReason = "FROM_DELETE_FIELD"
233233

234234
DeleteReasonEvent ConfigDeleteReason = "FROM_EVENT"
235+
236+
DeleteReasonScraperDeleted ConfigDeleteReason = "SCRAPER_DELETED"
235237
)

db/config_scraper.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,13 @@ func DeleteScrapeConfig(ctx context.Context, id string) error {
6060
// Soft delete remaining config_items
6161
if err := ctx.DB().Exec(fmt.Sprintf(`
6262
UPDATE config_items
63-
SET deleted_at = NOW()
63+
SET
64+
deleted_at = NOW(),
65+
delete_reason = ?
6466
WHERE id NOT IN (%s)
6567
AND scraper_id = ?
6668
AND deleted_at IS NULL
67-
`, selectQuery), id).Error; err != nil {
69+
`, selectQuery), v1.DeleteReasonScraperDeleted, id).Error; err != nil {
6870
return err
6971
}
7072
return nil
@@ -109,8 +111,19 @@ func PersistScrapeConfigFromCRD(ctx context.Context, scrapeConfig *v1.ScrapeConf
109111
Spec: spec,
110112
Source: models.SourceCRD,
111113
}
112-
tx := ctx.DB().Save(&configScraper)
113-
return configScraper, changed, tx.Error
114+
if err := ctx.DB().Save(&configScraper).Error; err != nil {
115+
return models.ConfigScraper{}, changed, err
116+
}
117+
118+
if existing.DeletedAt != nil {
119+
if err := ctx.DB().Model(&models.ConfigScraper{}).
120+
Where("id = ?", configScraper.ID).
121+
Update("deleted_at", gorm.Expr("NULL")).Error; err != nil {
122+
return models.ConfigScraper{}, changed, fmt.Errorf("error reseting deleted_at for scraper[%s]: %w", configScraper.ID, err)
123+
}
124+
}
125+
126+
return configScraper, changed, nil
114127
}
115128

116129
func GetScrapeConfigsOfAgent(ctx context.Context, agentID uuid.UUID) ([]models.ConfigScraper, error) {

jobs/cleanup.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ var (
2626
ConfigAnalysisRetentionDays int
2727
ConfigChangeRetentionDays int
2828
ConfigItemRetentionDays int
29+
ConfigScraperRetentionDays = 30
2930
)
3031

3132
var cleanupJobs = []*job.Job{
@@ -177,12 +178,19 @@ var CleanupConfigScrapers = &job.Job{
177178

178179
for _, id := range deletedIDs {
179180
if err := cdb.DeleteScrapeConfig(ctx.Context, id); err != nil {
180-
ctx.History.AddErrorf("error deleting scrape config[%s]: %v", id, err)
181+
ctx.History.AddErrorf("error soft deleting scrape config[%s]: %v", id, err)
181182
} else {
182183
ctx.History.SuccessCount += 1
183184
}
184185
}
185186

187+
// Hard delete old config scrapers
188+
retention := ctx.Properties().Duration("config_scraper.retention.period", (time.Hour * 24 * time.Duration(ConfigScraperRetentionDays)))
189+
days := int64(retention.Hours() / 24)
190+
if err := ctx.DB().Exec(`DELETE FROM config_scrapers WHERE (NOW() - deleted_at ) > INTERVAL '1 day' * ?`, days).Error; err != nil {
191+
ctx.History.AddErrorf("error hard deleting config_scrapers: %v", err)
192+
}
193+
186194
return nil
187195
},
188196
}

0 commit comments

Comments
 (0)