diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2022-11-13 04:18:50 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-12 21:18:50 +0100 |
commit | 34283a74e85278fed2c9b70d6f8749dc6a4001ca (patch) | |
tree | f8fa43399cb723d55efc34dacf7947faf0ed5acf /routers | |
parent | a0a425a13ba587829a831aaecd8469d39d372111 (diff) | |
download | gitea-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')
-rw-r--r-- | routers/api/packages/conan/conan.go | 2 | ||||
-rw-r--r-- | routers/api/packages/container/blob.go | 4 | ||||
-rw-r--r-- | routers/api/packages/container/manifest.go | 4 | ||||
-rw-r--r-- | routers/api/packages/npm/npm.go | 2 |
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 } |