-
Notifications
You must be signed in to change notification settings - Fork 90
Open
Description
What happened?
Registering a protobuf schema with non-asci characters causes an 500 Internal Server Error.
What did you expect to happen?
Schema to be registered.
What else do we need to know?
Tried with ghcr.io/aiven-open/karapace:latest image to register schema with non-acsi characters, for example:
syntax = "proto3";
package example;
// Event событие
message Event {
string id = 1; // идентификатор события
}
Stack trace with an error from container logs:
uvicorn.error MainThread ERROR Exception in ASGI application
+ Exception Group Traceback (most recent call last):
| File "/venv/lib/python3.10/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
| yield
| File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 186, in __call__
| async with anyio.create_task_group() as task_group:
| File "/venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__
| raise BaseExceptionGroup(
| exceptiongroup.ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/venv/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
| result = await app( # type: ignore[func-returns-value]
| File "/venv/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
| return await self.app(scope, receive, send)
| File "/venv/lib/python3.10/site-packages/fastapi/applications.py", line 1054, in __call__
| await super().__call__(scope, receive, send)
| File "/venv/lib/python3.10/site-packages/starlette/applications.py", line 113, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 187, in __call__
| raise exc
| File "/venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 165, in __call__
| await self.app(scope, receive, _send)
| File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 185, in __call__
| with collapse_excgroups():
| File "/usr/local/lib/python3.10/contextlib.py", line 153, in __exit__
| self.gen.throw(typ, value, traceback)
| File "/venv/lib/python3.10/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 187, in __call__
| response = await self.dispatch_func(request, call_next)
| File "/venv/lib/python3.10/site-packages/dependency_injector/wiring.py", line 994, in _patched
| return await _async_inject(
| File "src/dependency_injector/_cwiring.pyx", line 66, in _async_inject
| File "/venv/lib/python3.10/site-packages/karapace/api/telemetry/middleware.py", line 39, in telemetry_middleware
| raise exc
| File "/venv/lib/python3.10/site-packages/karapace/api/telemetry/middleware.py", line 32, in telemetry_middleware
| response: Response = await call_next(request)
| File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 163, in call_next
| raise app_exc
| File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 149, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 185, in __call__
| with collapse_excgroups():
| File "/usr/local/lib/python3.10/contextlib.py", line 153, in __exit__
| self.gen.throw(typ, value, traceback)
| File "/venv/lib/python3.10/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 187, in __call__
| response = await self.dispatch_func(request, call_next)
| File "/venv/lib/python3.10/site-packages/karapace/api/middlewares/__init__.py", line 77, in set_content_types
| response = await call_next(request)
| File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 163, in call_next
| raise app_exc
| File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 149, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
| await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
| File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 715, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 735, in app
| await route.handle(scope, receive, send)
| File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 288, in handle
| await self.app(scope, receive, send)
| File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 76, in app
| await wrap_app_handling_exceptions(app, request)(scope, receive, send)
| File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 73, in app
| response = await f(request)
| File "/venv/lib/python3.10/site-packages/fastapi/routing.py", line 301, in app
| raw_response = await run_endpoint_function(
| File "/venv/lib/python3.10/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
| return await dependant.call(**values)
| File "/venv/lib/python3.10/site-packages/dependency_injector/wiring.py", line 994, in _patched
| return await _async_inject(
| File "src/dependency_injector/_cwiring.pyx", line 66, in _async_inject
| File "/venv/lib/python3.10/site-packages/karapace/api/routers/subjects.py", line 117, in subjects_subject_versions_post
| return await controller.subject_post(
| File "/venv/lib/python3.10/site-packages/karapace/api/controller.py", line 809, in subject_post
| new_schema = ValidatedTypedSchema.parse(
| File "/venv/lib/python3.10/site-packages/karapace/core/schema_models.py", line 395, in parse
| parsed_schema = parse(
| File "/venv/lib/python3.10/site-packages/karapace/core/schema_models.py", line 232, in parse
| parsed_schema = parse_protobuf_schema_definition(
| File "/venv/lib/python3.10/site-packages/karapace/core/schema_models.py", line 91, in parse_protobuf_schema_definition
| ProtobufSchema(schema_definition, references, dependencies)
| File "/venv/lib/python3.10/site-packages/karapace/core/protobuf/schema.py", line 186, in __init__
| self.proto_file_element = deserialize(schema)
| File "/venv/lib/python3.10/site-packages/karapace/core/protobuf/serialization.py", line 173, in deserialize
| serialized_pb = base64.b64decode(schema_b64, validate=True)
| File "/usr/local/lib/python3.10/base64.py", line 80, in b64decode
| s = _bytes_from_decode_data(s)
| File "/usr/local/lib/python3.10/base64.py", line 39, in _bytes_from_decode_data
| raise ValueError('string argument should contain only ASCII characters')
| ValueError: string argument should contain only ASCII characters
+------------------------------------
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/venv/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/venv/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
File "/venv/lib/python3.10/site-packages/fastapi/applications.py", line 1054, in __call__
await super().__call__(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 187, in __call__
raise exc
File "/venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 165, in __call__
await self.app(scope, receive, _send)
File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 185, in __call__
with collapse_excgroups():
File "/usr/local/lib/python3.10/contextlib.py", line 153, in __exit__
self.gen.throw(typ, value, traceback)
File "/venv/lib/python3.10/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 187, in __call__
response = await self.dispatch_func(request, call_next)
File "/venv/lib/python3.10/site-packages/dependency_injector/wiring.py", line 994, in _patched
return await _async_inject(
File "src/dependency_injector/_cwiring.pyx", line 66, in _async_inject
File "/venv/lib/python3.10/site-packages/karapace/api/telemetry/middleware.py", line 39, in telemetry_middleware
raise exc
File "/venv/lib/python3.10/site-packages/karapace/api/telemetry/middleware.py", line 32, in telemetry_middleware
response: Response = await call_next(request)
File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 163, in call_next
raise app_exc
File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 149, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 185, in __call__
with collapse_excgroups():
File "/usr/local/lib/python3.10/contextlib.py", line 153, in __exit__
self.gen.throw(typ, value, traceback)
File "/venv/lib/python3.10/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 187, in __call__
response = await self.dispatch_func(request, call_next)
File "/venv/lib/python3.10/site-packages/karapace/api/middlewares/__init__.py", line 77, in set_content_types
response = await call_next(request)
File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 163, in call_next
raise app_exc
File "/venv/lib/python3.10/site-packages/starlette/middleware/base.py", line 149, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 715, in __call__
await self.middleware_stack(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 735, in app
await route.handle(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 288, in handle
await self.app(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 76, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 73, in app
response = await f(request)
File "/venv/lib/python3.10/site-packages/fastapi/routing.py", line 301, in app
raw_response = await run_endpoint_function(
File "/venv/lib/python3.10/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
return await dependant.call(**values)
File "/venv/lib/python3.10/site-packages/dependency_injector/wiring.py", line 994, in _patched
return await _async_inject(
File "src/dependency_injector/_cwiring.pyx", line 66, in _async_inject
File "/venv/lib/python3.10/site-packages/karapace/api/routers/subjects.py", line 117, in subjects_subject_versions_post
return await controller.subject_post(
File "/venv/lib/python3.10/site-packages/karapace/api/controller.py", line 809, in subject_post
new_schema = ValidatedTypedSchema.parse(
File "/venv/lib/python3.10/site-packages/karapace/core/schema_models.py", line 395, in parse
parsed_schema = parse(
File "/venv/lib/python3.10/site-packages/karapace/core/schema_models.py", line 232, in parse
parsed_schema = parse_protobuf_schema_definition(
File "/venv/lib/python3.10/site-packages/karapace/core/schema_models.py", line 91, in parse_protobuf_schema_definition
ProtobufSchema(schema_definition, references, dependencies)
File "/venv/lib/python3.10/site-packages/karapace/core/protobuf/schema.py", line 186, in __init__
self.proto_file_element = deserialize(schema)
File "/venv/lib/python3.10/site-packages/karapace/core/protobuf/serialization.py", line 173, in deserialize
serialized_pb = base64.b64decode(schema_b64, validate=True)
File "/usr/local/lib/python3.10/base64.py", line 80, in b64decode
s = _bytes_from_decode_data(s)
File "/usr/local/lib/python3.10/base64.py", line 39, in _bytes_from_decode_data
raise ValueError('string argument should contain only ASCII characters')
ValueError: string argument should contain only ASCII characters
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels