diff options
author | zeripath <art27@cantab.net> | 2023-01-16 19:50:53 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-16 13:50:53 -0600 |
commit | 2cc3a6381cab34113fd2dc2c24ef0efc22c4336d (patch) | |
tree | 6c2e2db756ae2818471de99bc5dca4d2aeddadc7 /models/migrations/v1_19 | |
parent | 04c97aa36473bc0070a2fe46e86dc645dc75ee85 (diff) | |
download | gitea-2cc3a6381cab34113fd2dc2c24ef0efc22c4336d.tar.gz gitea-2cc3a6381cab34113fd2dc2c24ef0efc22c4336d.zip |
Add cron method to gc LFS MetaObjects (#22385)
This PR adds a task to the cron service to allow garbage collection of
LFS meta objects. As repositories may have a large number of
LFSMetaObjects, an updated column is added to this table and it is used
to perform a generational GC to attempt to reduce the amount of work.
(There may need to be a bit more work here but this is probably enough
for the moment.)
Fix #7045
Signed-off-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'models/migrations/v1_19')
-rw-r--r-- | models/migrations/v1_19/v238.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/models/migrations/v1_19/v238.go b/models/migrations/v1_19/v238.go new file mode 100644 index 0000000000..266e6cea58 --- /dev/null +++ b/models/migrations/v1_19/v238.go @@ -0,0 +1,27 @@ +// Copyright 2022 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package v1_19 //nolint + +import ( + "code.gitea.io/gitea/modules/timeutil" + + "xorm.io/xorm" +) + +// AddUpdatedUnixToLFSMetaObject adds an updated column to the LFSMetaObject to allow for garbage collection +func AddUpdatedUnixToLFSMetaObject(x *xorm.Engine) error { + // Drop the table introduced in `v211`, it's considered badly designed and doesn't look like to be used. + // See: https://github.com/go-gitea/gitea/issues/21086#issuecomment-1318217453 + // LFSMetaObject stores metadata for LFS tracked files. + type LFSMetaObject struct { + ID int64 `xorm:"pk autoincr"` + Oid string `json:"oid" xorm:"UNIQUE(s) INDEX NOT NULL"` + Size int64 `json:"size" xorm:"NOT NULL"` + RepositoryID int64 `xorm:"UNIQUE(s) INDEX NOT NULL"` + CreatedUnix timeutil.TimeStamp `xorm:"created"` + UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` + } + + return x.Sync(new(LFSMetaObject)) +} |