From d2ca021df0eccd6103b9f0f4a0b942dc95bd18b8 Mon Sep 17 00:00:00 2001 From: zeripath Date: Sun, 27 Mar 2022 15:40:17 +0100 Subject: Touch mirrors on even on fail to update (#19217) * Touch mirrors on even on fail to update If a mirror fails to be synchronised it should be pushed to the bottom of the queue of the awaiting mirrors to be synchronised. At present if there LIMIT number of broken mirrors they can effectively prevent all other mirrors from being synchronized as their last_updated time will remain earlier than other mirrors. Signed-off-by: Andrew Thornton --- models/repo/mirror.go | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'models') diff --git a/models/repo/mirror.go b/models/repo/mirror.go index 8494331ff7..df4e320752 100644 --- a/models/repo/mirror.go +++ b/models/repo/mirror.go @@ -6,6 +6,7 @@ package repo import ( + "context" "errors" "fmt" "time" @@ -113,6 +114,13 @@ func UpdateMirror(m *Mirror) error { return updateMirror(db.GetEngine(db.DefaultContext), m) } +// TouchMirror updates the mirror updatedUnix +func TouchMirror(ctx context.Context, m *Mirror) error { + m.UpdatedUnix = timeutil.TimeStampNow() + _, err := db.GetEngine(ctx).ID(m.ID).Cols("updated_unix").Update(m) + return err +} + // DeleteMirrorByRepoID deletes a mirror by repoID func DeleteMirrorByRepoID(repoID int64) error { _, err := db.GetEngine(db.DefaultContext).Delete(&Mirror{RepoID: repoID}) -- cgit v1.2.3