gunicorn-registry stdout | 2023-03-16 09:50:38,077 [310] [ERROR] [gunicorn.error] Error handling request /v2/library/ubuntu/manifests/latest gunicorn-registry stdout | Traceback (most recent call last): gunicorn-registry stdout | File "/quay-registry/image/oci/config.py", line 209, in __init__ gunicorn-registry stdout | validate_schema(self._parsed, OCIConfig.METASCHEMA) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/jsonschema/validators.py", line 934, in validate gunicorn-registry stdout | raise error gunicorn-registry stdout | jsonschema.exceptions.ValidationError: None is not of type 'array' gunicorn-registry stdout | Failed validating 'type' in schema['properties']['config']['properties']['Entrypoint']: gunicorn-registry stdout | {'type': 'array'} gunicorn-registry stdout | On instance['config']['Entrypoint']: gunicorn-registry stdout | None gunicorn-registry stdout | During handling of the above exception, another exception occurred: 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 127, 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 2463, 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 169, 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 2449, 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 1866, in handle_exception gunicorn-registry stdout | reraise(exc_type, exc_value, tb) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/flask/_compat.py", line 39, in reraise gunicorn-registry stdout | raise value gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/flask/app.py", line 2446, 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 1951, 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 1820, in handle_user_exception gunicorn-registry stdout | reraise(exc_type, exc_value, tb) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/flask/_compat.py", line 39, in reraise gunicorn-registry stdout | raise value gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/flask/app.py", line 1949, 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 1935, in dispatch_request gunicorn-registry stdout | return self.view_functions[rule.endpoint](**req.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/endpoints/v2/manifest.py", line 224, in wrapped gunicorn-registry stdout | return func(*args, **kwargs) gunicorn-registry stdout | File "/quay-registry/auth/registry_jwt_auth.py", line 177, in wrapper gunicorn-registry stdout | return func(*args, **kwargs) gunicorn-registry stdout | File "/quay-registry/endpoints/v2/__init__.py", line 173, 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/manifest.py", line 256, in write_manifest_by_tagname gunicorn-registry stdout | return _write_manifest_and_log(namespace_name, repo_name, manifest_ref, parsed) gunicorn-registry stdout | File "/quay-registry/endpoints/v2/manifest.py", line 362, in _write_manifest_and_log gunicorn-registry stdout | repository_ref, manifest, tag = _write_manifest( gunicorn-registry stdout | File "/quay-registry/endpoints/v2/manifest.py", line 404, in _write_manifest gunicorn-registry stdout | manifest, tag = registry_model.create_manifest_and_retarget_tag( gunicorn-registry stdout | File "/quay-registry/data/registry_model/registry_oci_model.py", line 360, in create_manifest_and_retarget_tag gunicorn-registry stdout | created_manifest = oci.manifest.get_or_create_manifest( gunicorn-registry stdout | File "/quay-registry/data/model/oci/manifest.py", line 239, in get_or_create_manifest gunicorn-registry stdout | return _create_manifest( gunicorn-registry stdout | File "/quay-registry/data/model/oci/manifest.py", line 296, in _create_manifest gunicorn-registry stdout | labels = child_manifest.get_manifest_labels(retriever) gunicorn-registry stdout | File "/quay-registry/image/oci/manifest.py", line 253, in get_manifest_labels gunicorn-registry stdout | built_config = self._get_built_config(content_retriever) gunicorn-registry stdout | File "/quay-registry/image/oci/manifest.py", line 470, in _get_built_config gunicorn-registry stdout | self._cached_built_config = OCIConfig(Bytes.for_string_or_unicode(config_bytes)) gunicorn-registry stdout | File "/quay-registry/image/oci/config.py", line 211, in __init__ gunicorn-registry stdout | raise MalformedConfig("config data does not match schema: %s" % ve) gunicorn-registry stdout | image.oci.config.MalformedConfig: config data does not match schema: None is not of type 'array' gunicorn-registry stdout | Failed validating 'type' in schema['properties']['config']['properties']['Entrypoint']: gunicorn-registry stdout | {'type': 'array'} gunicorn-registry stdout | On instance['config']['Entrypoint']: gunicorn-registry stdout | None gunicorn-registry stdout | 2023-03-16 09:50:38,078 [310] [INFO] [gunicorn.access] - - [16/Mar/2023:09:50:38 +0000] "PUT /v2/library/ubuntu/manifests/latest HTTP/1.1" 500 0 "-" "-" nginx stdout | 172.19.0.7 (-) - - [16/Mar/2023:09:50:38 +0000] "PUT /v2/library/ubuntu/manifests/latest HTTP/2.0" 500 141 "-" "skopeo/1.6.1" (0.031 2001 0.028) gunicorn-registry stdout | 2023-03-16 09:50:38,093 [311] [ERROR] [endpoints.v2.manifest] failed to parse manifest when writing by tagname gunicorn-registry stdout | Traceback (most recent call last): gunicorn-registry stdout | File "/quay-registry/image/docker/schema2/list.py", line 172, in __init__ gunicorn-registry stdout | validate_schema(self._parsed, DockerSchema2ManifestList.METASCHEMA) gunicorn-registry stdout | File "/app/lib/python3.9/site-packages/jsonschema/validators.py", line 934, in validate gunicorn-registry stdout | raise error gunicorn-registry stdout | jsonschema.exceptions.ValidationError: 'application/vnd.oci.image.manifest.v1+json' is not one of ['application/vnd.docker.distribution.manifest.v2+json', 'application/vnd.docker.distribution.manifest.v1+json'] gunicorn-registry stdout | Failed validating 'enum' in schema['properties']['manifests']['items']['properties']['mediaType']: gunicorn-registry stdout | {'description': 'The MIME type of the referenced object. This will ' gunicorn-registry stdout | 'generally be ' gunicorn-registry stdout | 'application/vnd.docker.distribution.manifest.v2+json, ' gunicorn-registry stdout | 'but it could also be ' gunicorn-registry stdout | 'application/vnd.docker.distribution.manifest.v1+json ' gunicorn-registry stdout | 'if the manifest list references a legacy schema-1 ' gunicorn-registry stdout | 'manifest.', gunicorn-registry stdout | 'enum': ['application/vnd.docker.distribution.manifest.v2+json', gunicorn-registry stdout | 'application/vnd.docker.distribution.manifest.v1+json'], gunicorn-registry stdout | 'type': 'string'} gunicorn-registry stdout | On instance['manifests'][0]['mediaType']: gunicorn-registry stdout | 'application/vnd.oci.image.manifest.v1+json' gunicorn-registry stdout | During handling of the above exception, another exception occurred: gunicorn-registry stdout | Traceback (most recent call last): gunicorn-registry stdout | File "/quay-registry/endpoints/v2/manifest.py", line 317, in _parse_manifest gunicorn-registry stdout | return parse_manifest_from_bytes(Bytes.for_string_or_unicode(request_data), content_type) gunicorn-registry stdout | File "/quay-registry/image/shared/schemas.py", line 41, in parse_manifest_from_bytes gunicorn-registry stdout | return DockerSchema2ManifestList(manifest_bytes) gunicorn-registry stdout | File "/quay-registry/image/docker/schema2/list.py", line 174, in __init__ gunicorn-registry stdout | raise MalformedSchema2ManifestList("manifest data does not match schema: %s" % ve) gunicorn-registry stdout | image.docker.schema2.list.MalformedSchema2ManifestList: manifest data does not match schema: 'application/vnd.oci.image.manifest.v1+json' is not one of ['application/vnd.docker.distribution.manifest.v2+json', 'application/vnd.docker.distribution.manifest.v1+json'] gunicorn-registry stdout | Failed validating 'enum' in schema['properties']['manifests']['items']['properties']['mediaType']: gunicorn-registry stdout | {'description': 'The MIME type of the referenced object. This will ' gunicorn-registry stdout | 'generally be ' gunicorn-registry stdout | 'application/vnd.docker.distribution.manifest.v2+json, ' gunicorn-registry stdout | 'but it could also be ' gunicorn-registry stdout | 'application/vnd.docker.distribution.manifest.v1+json ' gunicorn-registry stdout | 'if the manifest list references a legacy schema-1 ' gunicorn-registry stdout | 'manifest.', gunicorn-registry stdout | 'enum': ['application/vnd.docker.distribution.manifest.v2+json', gunicorn-registry stdout | 'application/vnd.docker.distribution.manifest.v1+json'], gunicorn-registry stdout | 'type': 'string'} gunicorn-registry stdout | On instance['manifests'][0]['mediaType']: gunicorn-registry stdout | 'application/vnd.oci.image.manifest.v1+json'