@@ -10,6 +10,7 @@ import (
1010 "fmt"
1111 "strconv"
1212 "strings"
13+ "time"
1314
1415 "code.gitea.io/gitea/models"
1516 "code.gitea.io/gitea/models/db"
@@ -43,20 +44,53 @@ var (
4344)
4445
4546// AddToTaskQueue adds itself to pull request test task queue.
46- func AddToTaskQueue (pr * issues_model.PullRequest ) {
47+ func setStatusChecking (pr * issues_model.PullRequest ) bool {
4748 pr .Status = issues_model .PullRequestStatusChecking
4849 err := pr .UpdateColsIfNotMerged (db .DefaultContext , "status" )
4950 if err != nil {
5051 log .Error ("AddToTaskQueue(%-v).UpdateCols.(add to queue): %v" , pr , err )
51- return
52+ return false
5253 }
54+ return true
55+ }
56+
57+ func addToTaskQueue (pr * issues_model.PullRequest ) {
5358 log .Trace ("Adding %-v to the test pull requests queue" , pr )
54- err = prPatchCheckerQueue .Push (strconv .FormatInt (pr .ID , 10 ))
59+ err : = prPatchCheckerQueue .Push (strconv .FormatInt (pr .ID , 10 ))
5560 if err != nil && err != queue .ErrAlreadyInQueue {
5661 log .Error ("Error adding %-v to the test pull requests queue: %v" , pr , err )
5762 }
5863}
5964
65+ func AddToTaskQueueOnView (pr * issues_model.PullRequest ) {
66+ if pr .Status == issues_model .PullRequestStatusChecking {
67+ addToTaskQueue (pr )
68+ }
69+ }
70+
71+ func AddToTaskQueueOnBaseUpdate (ctx context.Context , pr * issues_model.PullRequest ) {
72+ // Blender: don't immediately check PRs older than a week, instead check when
73+ // the page is loaded.
74+ if ! setStatusChecking (pr ) {
75+ return
76+ }
77+ if err := pr .LoadIssue (ctx ); err != nil {
78+ return
79+ }
80+ if pr .Issue .UpdatedUnix .AddDuration (24 * time .Hour ) < timeutil .TimeStampNow () {
81+ log .Trace ("Delaying %-v patch checking because it was not updated recently" , pr )
82+ return
83+ }
84+
85+ addToTaskQueue (pr )
86+ }
87+
88+ func AddToTaskQueue (pr * issues_model.PullRequest ) {
89+ if setStatusChecking (pr ) {
90+ addToTaskQueue (pr )
91+ }
92+ }
93+
6094type MergeCheckType int
6195
6296const (
0 commit comments