aboutsummaryrefslogtreecommitdiffstats
path: root/modules/packages
diff options
context:
space:
mode:
authorKN4CK3R <admin@oldschoolhack.me>2022-11-25 06:47:46 +0100
committerGitHub <noreply@github.com>2022-11-25 13:47:46 +0800
commita1ae83f36ece5e37c738bd796227cf5990ccc030 (patch)
tree9d885adb69db89450b845fd936d3eb5fb91420a1 /modules/packages
parent9ce5e092f3f0e0048c49419c4ccd886e817a764f (diff)
downloadgitea-a1ae83f36ece5e37c738bd796227cf5990ccc030.tar.gz
gitea-a1ae83f36ece5e37c738bd796227cf5990ccc030.zip
Workaround for container registry push/pull errors (#21862)
This PR addresses #19586 I added a mutex to the upload version creation which will prevent the push errors when two requests try to create these database entries. I'm not sure if this should be the final solution for this problem. I added a workaround to allow a reupload of missing blobs. Normally a reupload is skipped because the database knows the blob is already present. The workaround checks if the blob exists on the file system. This should not be needed anymore with the above fix so I marked this code to be removed with Gitea v1.20. Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'modules/packages')
-rw-r--r--modules/packages/content_store.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/modules/packages/content_store.go b/modules/packages/content_store.go
index be416ac269..13763db986 100644
--- a/modules/packages/content_store.go
+++ b/modules/packages/content_store.go
@@ -32,6 +32,13 @@ func (s *ContentStore) Get(key BlobHash256Key) (storage.Object, error) {
return s.store.Open(KeyToRelativePath(key))
}
+// FIXME: Workaround to be removed in v1.20
+// https://github.com/go-gitea/gitea/issues/19586
+func (s *ContentStore) Has(key BlobHash256Key) error {
+ _, err := s.store.Stat(KeyToRelativePath(key))
+ return err
+}
+
// Save stores a package blob
func (s *ContentStore) Save(key BlobHash256Key, r io.Reader, size int64) error {
_, err := s.store.Save(KeyToRelativePath(key), r, size)