aboutsummaryrefslogtreecommitdiffstats
path: root/routers/api
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2022-11-13 04:18:50 +0800
committerGitHub <noreply@github.com>2022-11-12 21:18:50 +0100
commit34283a74e85278fed2c9b70d6f8749dc6a4001ca (patch)
treef8fa43399cb723d55efc34dacf7947faf0ed5acf /routers/api
parenta0a425a13ba587829a831aaecd8469d39d372111 (diff)
downloadgitea-34283a74e85278fed2c9b70d6f8749dc6a4001ca.tar.gz
gitea-34283a74e85278fed2c9b70d6f8749dc6a4001ca.zip
Allow detect whether it's in a database transaction for a context.Context (#21756)
Fix #19513 This PR introduce a new db method `InTransaction(context.Context)`, and also builtin check on `db.TxContext` and `db.WithTx`. There is also a new method `db.AutoTx` has been introduced but could be used by other PRs. `WithTx` will always open a new transaction, if a transaction exist in context, return an error. `AutoTx` will try to open a new transaction if no transaction exist in context. That means it will always enter a transaction if there is no error. Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: 6543 <6543@obermui.de>
Diffstat (limited to 'routers/api')
-rw-r--r--routers/api/packages/conan/conan.go2
-rw-r--r--routers/api/packages/container/blob.go4
-rw-r--r--routers/api/packages/container/manifest.go4
-rw-r--r--routers/api/packages/npm/npm.go2
4 files changed, 6 insertions, 6 deletions
diff --git a/routers/api/packages/conan/conan.go b/routers/api/packages/conan/conan.go
index c8c9dc3e38..b69a674106 100644
--- a/routers/api/packages/conan/conan.go
+++ b/routers/api/packages/conan/conan.go
@@ -604,7 +604,7 @@ func DeletePackageV2(ctx *context.Context) {
}
func deleteRecipeOrPackage(apictx *context.Context, rref *conan_module.RecipeReference, ignoreRecipeRevision bool, pref *conan_module.PackageReference, ignorePackageRevision bool) error {
- ctx, committer, err := db.TxContext()
+ ctx, committer, err := db.TxContext(db.DefaultContext)
if err != nil {
return err
}
diff --git a/routers/api/packages/container/blob.go b/routers/api/packages/container/blob.go
index 8a9cbd4a15..df6b7aed92 100644
--- a/routers/api/packages/container/blob.go
+++ b/routers/api/packages/container/blob.go
@@ -28,7 +28,7 @@ func saveAsPackageBlob(hsr packages_module.HashedSizeReader, pi *packages_servic
contentStore := packages_module.NewContentStore()
- err := db.WithTx(func(ctx context.Context) error {
+ err := db.WithTx(db.DefaultContext, func(ctx context.Context) error {
created := true
p := &packages_model.Package{
OwnerID: pi.Owner.ID,
@@ -117,7 +117,7 @@ func saveAsPackageBlob(hsr packages_module.HashedSizeReader, pi *packages_servic
}
func deleteBlob(ownerID int64, image, digest string) error {
- return db.WithTx(func(ctx context.Context) error {
+ return db.WithTx(db.DefaultContext, func(ctx context.Context) error {
pfds, err := container_model.GetContainerBlobs(ctx, &container_model.BlobSearchOptions{
OwnerID: ownerID,
Image: image,
diff --git a/routers/api/packages/container/manifest.go b/routers/api/packages/container/manifest.go
index 8beed3dbb7..a48b1de3b2 100644
--- a/routers/api/packages/container/manifest.go
+++ b/routers/api/packages/container/manifest.go
@@ -77,7 +77,7 @@ func processImageManifest(mci *manifestCreationInfo, buf *packages_module.Hashed
return err
}
- ctx, committer, err := db.TxContext()
+ ctx, committer, err := db.TxContext(db.DefaultContext)
if err != nil {
return err
}
@@ -190,7 +190,7 @@ func processImageManifestIndex(mci *manifestCreationInfo, buf *packages_module.H
return err
}
- ctx, committer, err := db.TxContext()
+ ctx, committer, err := db.TxContext(db.DefaultContext)
if err != nil {
return err
}
diff --git a/routers/api/packages/npm/npm.go b/routers/api/packages/npm/npm.go
index 6d589bde3a..af0e9be56e 100644
--- a/routers/api/packages/npm/npm.go
+++ b/routers/api/packages/npm/npm.go
@@ -355,7 +355,7 @@ func setPackageTag(tag string, pv *packages_model.PackageVersion, deleteOnly boo
return errInvalidTagName
}
- ctx, committer, err := db.TxContext()
+ ctx, committer, err := db.TxContext(db.DefaultContext)
if err != nil {
return err
}