mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00:00
fix: delete workspace agent stats after 180 days (#14489)
Fixes #13430. The test for purging old workspace agent stats from the DB was consistently failing when ran with Postgres towards the end of the month, but not with the in-memory DB. This was because month intervals are calculated differently for `time.Time` and the `interval` type in Postgres: ``` ethan=# SELECT '2024-08-30'::DATE AS original_date, ('2024-08-30'::DATE - INTERVAL '6 months') AS sub_date; original_date | sub_date ---------------+--------------------- 2024-08-30 | 2024-02-29 00:00:00 (1 row) ``` Using `func (t Time) AddDate(years int, months int, days int) Time`, where `months` is `-6`: ``` Original: 2024-08-30 00:00:00 +0000 UTC 6 Months Earlier: 2024-03-01 00:00:00 +0000 UTC ``` Since 6 months was chosen arbitrarily, we should be able to change it to 180 days, to remove any ambiguity between the in-memory DB, and the Postgres DB. The alternative solution would involve implementing Postgres' month interval algorithm in Go. The UI only shows stats as old as 168 days (24 weeks), so a frontend change isn't required for the extra days of stats we lose in some cases.
This commit is contained in:
@ -1749,10 +1749,10 @@ func (q *FakeQuerier) DeleteOldWorkspaceAgentStats(_ context.Context) error {
|
||||
-- use between 15 mins and 1 hour of data. We keep a
|
||||
-- little bit more (1 day) just in case.
|
||||
MAX(start_time) - '1 days'::interval,
|
||||
-- Fall back to 6 months ago if there are no template
|
||||
-- Fall back to ~6 months ago if there are no template
|
||||
-- usage stats so that we don't delete the data before
|
||||
-- it's rolled up.
|
||||
NOW() - '6 months'::interval
|
||||
NOW() - '180 days'::interval
|
||||
)
|
||||
FROM
|
||||
template_usage_stats
|
||||
@ -1778,7 +1778,7 @@ func (q *FakeQuerier) DeleteOldWorkspaceAgentStats(_ context.Context) error {
|
||||
}
|
||||
// COALESCE
|
||||
if limit.IsZero() {
|
||||
limit = now.AddDate(0, -6, 0)
|
||||
limit = now.AddDate(0, 0, -180)
|
||||
}
|
||||
|
||||
var validStats []database.WorkspaceAgentStat
|
||||
|
Reference in New Issue
Block a user