···55package main
6677import (
88+ "context"
89 "fmt"
910 "os"
1011 "path/filepath"
···18191920var (
2021 generators = []struct {
2121- gen func() (string, error)
2222+ gen func(ctx context.Context) (string, error)
2223 name string
2324 }{
2425 {
···4142 fmt.Printf("PrepareTestDatabase: %+v\n", err)
4243 os.Exit(1)
4344 }
4545+ ctx := context.Background()
4446 if len(os.Args) == 0 {
4547 for _, r := range os.Args {
4646- if err := generate(r); err != nil {
4848+ if err := generate(ctx, r); err != nil {
4749 fmt.Printf("generate '%s': %+v\n", r, err)
4850 os.Exit(1)
4951 }
5052 }
5153 } else {
5254 for _, g := range generators {
5353- if err := generate(g.name); err != nil {
5555+ if err := generate(ctx, g.name); err != nil {
5456 fmt.Printf("generate '%s': %+v\n", g.name, err)
5557 os.Exit(1)
5658 }
···5860 }
5961}
60626161-func generate(name string) error {
6363+func generate(ctx context.Context, name string) error {
6264 for _, g := range generators {
6365 if g.name == name {
6464- data, err := g.gen()
6666+ data, err := g.gen(ctx)
6567 if err != nil {
6668 return err
6769 }
+1-1
models/asymkey/ssh_key_authorized_keys.go
···115115}
116116117117// RewriteAllPublicKeys removes any authorized key and rewrite all keys from database again.
118118-// Note: db.GetEngine(db.DefaultContext).Iterate does not get latest data after insert/delete, so we have to call this function
118118+// Note: db.GetEngine(ctx).Iterate does not get latest data after insert/delete, so we have to call this function
119119// outside any session scope independently.
120120func RewriteAllPublicKeys(ctx context.Context) error {
121121 // Don't rewrite key if internal server
+1-1
models/asymkey/ssh_key_authorized_principals.go
···4040const authorizedPrincipalsFile = "authorized_principals"
41414242// RewriteAllPrincipalKeys removes any authorized principal and rewrite all keys from database again.
4343-// Note: db.GetEngine(db.DefaultContext).Iterate does not get latest data after insert/delete, so we have to call this function
4343+// Note: db.GetEngine(ctx).Iterate does not get latest data after insert/delete, so we have to call this function
4444// outside any session scope independently.
4545func RewriteAllPrincipalKeys(ctx context.Context) error {
4646 // Don't rewrite key if internal server
+6-5
models/fixture_generation.go
···44package models
5566import (
77+ "context"
78 "fmt"
89 "strings"
910···14151516// GetYamlFixturesAccess returns a string containing the contents
1617// for the access table, as recalculated using repo.RecalculateAccesses()
1717-func GetYamlFixturesAccess() (string, error) {
1818+func GetYamlFixturesAccess(ctx context.Context) (string, error) {
1819 repos := make([]*repo_model.Repository, 0, 50)
1919- if err := db.GetEngine(db.DefaultContext).Find(&repos); err != nil {
2020+ if err := db.GetEngine(ctx).Find(&repos); err != nil {
2021 return "", err
2122 }
22232324 for _, repo := range repos {
2424- repo.MustOwner(db.DefaultContext)
2525- if err := access_model.RecalculateAccesses(db.DefaultContext, repo); err != nil {
2525+ repo.MustOwner(ctx)
2626+ if err := access_model.RecalculateAccesses(ctx, repo); err != nil {
2627 return "", err
2728 }
2829 }
···3031 var b strings.Builder
31323233 accesses := make([]*access_model.Access, 0, 200)
3333- if err := db.GetEngine(db.DefaultContext).OrderBy("user_id, repo_id").Find(&accesses); err != nil {
3434+ if err := db.GetEngine(ctx).OrderBy("user_id, repo_id").Find(&accesses); err != nil {
3435 return "", err
3536 }
3637
···2323}
24242525// SaveAppStateContent saves the app state item to database
2626-func SaveAppStateContent(key, content string) error {
2727- return db.WithTx(db.DefaultContext, func(ctx context.Context) error {
2626+func SaveAppStateContent(ctx context.Context, key, content string) error {
2727+ return db.WithTx(ctx, func(ctx context.Context) error {
2828 eng := db.GetEngine(ctx)
2929 // try to update existing row
3030 res, err := eng.Exec("UPDATE app_state SET revision=revision+1, content=? WHERE id=?", content, key)
···4343}
44444545// GetAppStateContent gets an app state from database
4646-func GetAppStateContent(key string) (content string, err error) {
4747- e := db.GetEngine(db.DefaultContext)
4646+func GetAppStateContent(ctx context.Context, key string) (content string, err error) {
4747+ e := db.GetEngine(ctx)
4848 appState := &AppState{ID: key}
4949 has, err := e.Get(appState)
5050 if err != nil {
+4-2
modules/system/appstate.go
···3344package system
5566+import "context"
77+68// StateStore is the interface to get/set app state items
79type StateStore interface {
88- Get(item StateItem) error
99- Set(item StateItem) error
1010+ Get(ctx context.Context, item StateItem) error
1111+ Set(ctx context.Context, item StateItem) error
1012}
11131214// StateItem provides the name for a state item. the name will be used to generate filenames, etc
···4848 log.Critical("PANIC during runMigrateTask[%d] by DoerID[%d] to RepoID[%d] for OwnerID[%d]: %v\nStacktrace: %v", t.ID, t.DoerID, t.RepoID, t.OwnerID, e, log.Stack(2))
4949 }
5050 // fixme: Because ctx is canceled here, so the db.DefaultContext is needed.
5151+ ctx := db.DefaultContext
5152 if err == nil {
5252- err = admin_model.FinishMigrateTask(db.DefaultContext, t)
5353+ err = admin_model.FinishMigrateTask(ctx, t)
5354 if err == nil {
5454- notify_service.MigrateRepository(db.DefaultContext, t.Doer, t.Owner, t.Repo)
5555+ notify_service.MigrateRepository(ctx, t.Doer, t.Owner, t.Repo)
5556 return
5657 }
5758···6364 t.EndTime = timeutil.TimeStampNow()
6465 t.Status = structs.TaskStatusFailed
6566 t.Message = err.Error()
6666- // fixme: Because ctx is canceled here, so the db.DefaultContext is needed.
6767- if err := t.UpdateCols(db.DefaultContext, "status", "message", "end_time"); err != nil {
6767+ if err := t.UpdateCols(ctx, "status", "message", "end_time"); err != nil {
6868 log.Error("Task UpdateCols failed: %v", err)
6969 }
7070
+2-2
services/user/user.go
···159159 // An alternative option here would be write a DeleteAllRepositoriesForUserID function which would delete all of the repos
160160 // but such a function would likely get out of date
161161 for {
162162- repos, _, err := repo_model.GetUserRepositories(&repo_model.SearchRepoOptions{
162162+ repos, _, err := repo_model.GetUserRepositories(ctx, &repo_model.SearchRepoOptions{
163163 ListOptions: db.ListOptions{
164164 PageSize: repo_model.RepositoryListDefaultPageSize,
165165 Page: 1,
···204204 break
205205 }
206206 for _, org := range orgs {
207207- if err := models.RemoveOrgUser(org.ID, u.ID); err != nil {
207207+ if err := models.RemoveOrgUser(ctx, org.ID, u.ID); err != nil {
208208 if organization.IsErrLastOrgOwner(err) {
209209 err = organization.DeleteOrganization(ctx, org)
210210 }
···430430 assert.True(t, isMember, "Membership should be added to the right team")
431431 err = models.RemoveTeamMember(db.DefaultContext, team, user.ID)
432432 assert.NoError(t, err)
433433- err = models.RemoveOrgUser(usersOrgs[0].ID, user.ID)
433433+ err = models.RemoveOrgUser(db.DefaultContext, usersOrgs[0].ID, user.ID)
434434 assert.NoError(t, err)
435435 } else {
436436 // assert members of LDAP group "cn=admin_staff" keep initial team membership since mapped team does not exist