EntityTooLarge exception when pushing big image to Quay
Issue
-
Issue while mirroring big-size images to Quay:
gunicorn-registry stdout | 2024-03-03 16:23:05,891 [247] [ERROR] [gunicorn.error] Error handling request /v2/example/example/example/example/blobs/uploads/47428601-0aa4-0935-4109-a6b1c6d0a1b2?digest=sha256%3A2f99f10d8104c51445cb8a09e28d5e3242ab44e6e05928a7fc9df3d43b1a8d0c6 gunicorn-registry stdout | Traceback (most recent call last): gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/gunicorn/workers/base_async.py", line 55, in handle gunicorn-registry stdout | self.handle_request(listener_name, req, client, addr) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/gunicorn/workers/ggevent.py", line 128, in handle_request gunicorn-registry stdout | super().handle_request(listener_name, req, sock, addr) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/gunicorn/workers/base_async.py", line 108, in handle_request gunicorn-registry stdout | respiter = self.wsgi(environ, resp.start_response) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/flask/app.py", line 2213, in __call__ gunicorn-registry stdout | return self.wsgi_app(environ, start_response) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/werkzeug/middleware/proxy_fix.py", line 182, in __call__ gunicorn-registry stdout | return self.app(environ, start_response) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/flask/app.py", line 2193, in wsgi_app gunicorn-registry stdout | response = self.handle_exception(e) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app gunicorn-registry stdout | response = self.full_dispatch_request() gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request gunicorn-registry stdout | rv = self.handle_user_exception(e) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request gunicorn-registry stdout | rv = self.dispatch_request() gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request gunicorn-registry stdout | return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) gunicorn-registry stdout | File "/quay-registry/endpoints/decorators.py", line 228, in wrapper gunicorn-registry stdout | return func(*args, **kwargs) gunicorn-registry stdout | File "/quay-registry/endpoints/decorators.py", line 91, in wrapper gunicorn-registry stdout | return func(*args, **kwargs) gunicorn-registry stdout | File "/quay-registry/auth/registry_jwt_auth.py", line 175, in wrapper gunicorn-registry stdout | return func(*args, **kwargs) gunicorn-registry stdout | File "/quay-registry/endpoints/v2/__init__.py", line 169, in wrapped gunicorn-registry stdout | return func(namespace_name, repo_name, *args, **kwargs) gunicorn-registry stdout | File "/quay-registry/endpoints/decorators.py", line 164, in wrapper gunicorn-registry stdout | return func(*args, **kwargs) gunicorn-registry stdout | File "/quay-registry/endpoints/decorators.py", line 189, in wrapper gunicorn-registry stdout | return func(*args, **kwargs) gunicorn-registry stdout | File "/quay-registry/endpoints/v2/blob.py", line 412, in monolithic_upload_or_last_chunk gunicorn-registry stdout | _upload_chunk(uploader, digest) gunicorn-registry stdout | File "/quay-registry/endpoints/v2/blob.py", line 546, in _upload_chunk gunicorn-registry stdout | return blob_uploader.commit_to_blob(app.config, commit_digest) gunicorn-registry stdout | File "/quay-registry/data/registry_model/blobuploader.py", line 300, in commit_to_blob gunicorn-registry stdout | storage_already_existed = self._finalize_blob_storage(app_config) gunicorn-registry stdout | File "/quay-registry/data/registry_model/blobuploader.py", line 360, in _finalize_blob_storage gunicorn-registry stdout | self.storage.complete_chunked_upload( gunicorn-registry stdout | File "/quay-registry/storage/distributedstorage.py", line 26, in wrapper gunicorn-registry stdout | return storage_func(*args, **kwargs) gunicorn-registry stdout | File "/quay-registry/storage/cloud.py", line 1028, in complete_chunked_upload gunicorn-registry stdout | self._client_side_chunk_join(final_path, chunk_list) gunicorn-registry stdout | File "/quay-registry/storage/cloud.py", line 558, in _client_side_chunk_join gunicorn-registry stdout | new_obj.copy_from(CopySource={"Bucket": self._bucket_name, "Key": chunk_path}) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/boto3/resources/factory.py", line 580, in do_action gunicorn-registry stdout | response = action(self, *args, **kwargs) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/boto3/resources/action.py", line 88, in __call__ gunicorn-registry stdout | response = getattr(parent.meta.client, operation_name)(*args, **params) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/botocore/client.py", line 535, in _api_call gunicorn-registry stdout | return self._make_api_call(operation_name, kwargs) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/botocore/client.py", line 980, in _make_api_call gunicorn-registry stdout | raise error_class(parsed_response, operation_name) gunicorn-registry stdout | botocore.exceptions.ClientError: An error occurred (EntityTooLarge) when calling the CopyObject operation: Unknown
Environment
- Red Hat Quay (Quay)
- 3.10
- Red Hat OpenShift Container Platform (RHOCP)
- 4
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.