@@ -28,6 +28,7 @@ import (
28
28
user_model "code.gitea.io/gitea/models/user"
29
29
"code.gitea.io/gitea/modules/cache"
30
30
"code.gitea.io/gitea/modules/git"
31
+ "code.gitea.io/gitea/modules/graceful"
31
32
"code.gitea.io/gitea/modules/log"
32
33
"code.gitea.io/gitea/modules/notification"
33
34
"code.gitea.io/gitea/modules/references"
@@ -165,9 +166,10 @@ func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.U
165
166
go AddTestPullRequestTask (doer , pr .BaseRepo .ID , pr .BaseBranch , false , "" , "" )
166
167
}()
167
168
168
- // TODO: make it able to do this in a database session
169
- mergeCtx := context .Background ()
170
- pr .MergedCommitID , err = rawMerge (mergeCtx , pr , doer , mergeStyle , expectedHeadCommitID , message )
169
+ // Run the merge in the hammer context to prevent cancellation
170
+ hammerCtx := graceful .GetManager ().HammerContext ()
171
+
172
+ pr .MergedCommitID , err = rawMerge (hammerCtx , pr , doer , mergeStyle , expectedHeadCommitID , message )
171
173
if err != nil {
172
174
return err
173
175
}
@@ -176,18 +178,18 @@ func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.U
176
178
pr .Merger = doer
177
179
pr .MergerID = doer .ID
178
180
179
- if _ , err := pr .SetMerged (ctx ); err != nil {
181
+ if _ , err := pr .SetMerged (hammerCtx ); err != nil {
180
182
log .Error ("setMerged [%d]: %v" , pr .ID , err )
181
183
}
182
184
183
- if err := pr .LoadIssueCtx (ctx ); err != nil {
185
+ if err := pr .LoadIssueCtx (hammerCtx ); err != nil {
184
186
log .Error ("loadIssue [%d]: %v" , pr .ID , err )
185
187
}
186
188
187
- if err := pr .Issue .LoadRepo (ctx ); err != nil {
189
+ if err := pr .Issue .LoadRepo (hammerCtx ); err != nil {
188
190
log .Error ("loadRepo for issue [%d]: %v" , pr .ID , err )
189
191
}
190
- if err := pr .Issue .Repo .GetOwner (ctx ); err != nil {
192
+ if err := pr .Issue .Repo .GetOwner (hammerCtx ); err != nil {
191
193
log .Error ("GetOwner for issue repo [%d]: %v" , pr .ID , err )
192
194
}
193
195
@@ -197,17 +199,17 @@ func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.U
197
199
cache .Remove (pr .Issue .Repo .GetCommitsCountCacheKey (pr .BaseBranch , true ))
198
200
199
201
// Resolve cross references
200
- refs , err := pr .ResolveCrossReferences (ctx )
202
+ refs , err := pr .ResolveCrossReferences (hammerCtx )
201
203
if err != nil {
202
204
log .Error ("ResolveCrossReferences: %v" , err )
203
205
return nil
204
206
}
205
207
206
208
for _ , ref := range refs {
207
- if err = ref .LoadIssueCtx (ctx ); err != nil {
209
+ if err = ref .LoadIssueCtx (hammerCtx ); err != nil {
208
210
return err
209
211
}
210
- if err = ref .Issue .LoadRepo (ctx ); err != nil {
212
+ if err = ref .Issue .LoadRepo (hammerCtx ); err != nil {
211
213
return err
212
214
}
213
215
close := ref .RefAction == references .XRefActionCloses
0 commit comments