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 <art27@cantab.net>
This commit is contained in:
parent
c29fbc6d23
commit
d2ca021df0
|
@ -6,6 +6,7 @@
|
||||||
package repo
|
package repo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
@ -113,6 +114,13 @@ func UpdateMirror(m *Mirror) error {
|
||||||
return updateMirror(db.GetEngine(db.DefaultContext), m)
|
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
|
// DeleteMirrorByRepoID deletes a mirror by repoID
|
||||||
func DeleteMirrorByRepoID(repoID int64) error {
|
func DeleteMirrorByRepoID(repoID int64) error {
|
||||||
_, err := db.GetEngine(db.DefaultContext).Delete(&Mirror{RepoID: repoID})
|
_, err := db.GetEngine(db.DefaultContext).Delete(&Mirror{RepoID: repoID})
|
||||||
|
|
|
@ -411,6 +411,9 @@ func SyncPullMirror(ctx context.Context, repoID int64) bool {
|
||||||
log.Trace("SyncMirrors [repo: %-v]: Running Sync", m.Repo)
|
log.Trace("SyncMirrors [repo: %-v]: Running Sync", m.Repo)
|
||||||
results, ok := runSync(ctx, m)
|
results, ok := runSync(ctx, m)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
if err = repo_model.TouchMirror(ctx, m); err != nil {
|
||||||
|
log.Error("SyncMirrors [repo: %-v]: failed to TouchMirror: %v", m.Repo, err)
|
||||||
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue