diff options
author | KN4CK3R <admin@oldschoolhack.me> | 2022-11-25 06:47:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-25 13:47:46 +0800 |
commit | a1ae83f36ece5e37c738bd796227cf5990ccc030 (patch) | |
tree | 9d885adb69db89450b845fd936d3eb5fb91420a1 /modules | |
parent | 9ce5e092f3f0e0048c49419c4ccd886e817a764f (diff) | |
download | gitea-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')
-rw-r--r-- | modules/packages/content_store.go | 7 |
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) |