EntityTooLarge exception when pushing big image to Quay

Solution In Progress - Updated -

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.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content