Skip to content

schema registry protobuf serialization exception after upgrading to 2.7.0 #1904

Open
@jbouricius

Description

Running version 2.6.1 of the library, this is approximately my code:

class FooSerializer:

    def __init__(self, topic: str, schema_registry: ConfluentSchemaRegistryClient):
        self._topic = topic
        self._protobuf_serializer = ProtobufSerializer(
            Foo,
            schema_registry,
            conf={
                "auto.register.schemas": False,
                "use.deprecated.format": False,
                "use.latest.version": True,
            },
        )

    def serialize(self, foo: Foo) -> bytearray:
        return self._protobuf_serializer(foo, SerializationContext(self._topic, MessageField.VALUE))

where Foo is some proto class already registered as the schema for the topic. This works exactly as I expect.

After upgrading to 2.7.x or 2.8.0, the same exact code hits an exception ending in this traceback:

    return self._protobuf_serializer(foo, SerializationContext(self._topic, MessageField.VALUE))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/testrunner/.local/lib/python3.11/site-packages/confluent_kafka/schema_registry/protobuf.py", line 582, in __call__
    fd_proto, pool = self._get_parsed_schema(latest_schema.schema)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/testrunner/.local/lib/python3.11/site-packages/confluent_kafka/schema_registry/protobuf.py", line 610, in _get_parsed_schema
    _resolve_named_schema(schema, self._registry, pool)
  File "/home/testrunner/.local/lib/python3.11/site-packages/confluent_kafka/schema_registry/protobuf.py", line 207, in _resolve_named_schema
    _resolve_named_schema(referenced_schema.schema, schema_registry_client, pool, visited)
  File "/home/testrunner/.local/lib/python3.11/site-packages/confluent_kafka/schema_registry/protobuf.py", line 208, in _resolve_named_schema
    file_descriptor_proto = _str_to_proto(ref.name, referenced_schema.schema.schema_str)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/testrunner/.local/lib/python3.11/site-packages/confluent_kafka/schema_registry/protobuf.py", line 182, in _str_to_proto
    raise SerializationError(str(e))
confluent_kafka.serialization.SerializationError: Error parsing message

I didn't see anything in the changelogs that indicated there was a breaking change here. Am I missing a change or is there some other problem? Any other information I can provide?

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions