[ 
https://issues.apache.org/jira/browse/NIFI-16427?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alaksiej Ščarbaty reassigned NIFI-16427:
----------------------------------------

    Assignee:     (was: Alaksiej Ščarbaty)

> ConfluentProtobufMessageNameResolver fails to parse Confluent Protobuf 
> schemas with implicit field_meta options
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: NIFI-16427
>                 URL: https://issues.apache.org/jira/browse/NIFI-16427
>             Project: Apache NiFi
>          Issue Type: Bug
>            Reporter: Alaksiej Ščarbaty
>            Priority: Major
>
> h2. Summary
> _ConfluentProtobufMessageNameResolver_ fails to parse Protobuf schemas 
> retrieved from Confluent Schema Registry when a schema contains the 
> {{{}(confluent.field_meta){}}}. [Antlr 
> grammar|https://github.com/antlr/grammars-v4/blob/master/protobuf/protobuf3/Protobuf3.g4]
>  doesn't support square brackets in field options. [Protobuf 
> spec|https://protobuf.dev/reference/protobuf/proto3-spec/#normal_field] 
> doesn't mention they are supported either.
> The failure occurs during schema parsing, while name is being resolved.
> h2. Example schema
> {code:java}
> syntax = "proto3";
> package example;
> message Value {
>   optional int32 enabled = 31 [(confluent.field_meta) = {
>     params: [
>       {
>         key: "connect.type",
>         value: "int16"
>       }
>     ]
>   }];
> }{code}
> h1. Proposed options
> _ConfluentProtobufMessageNameResolver_ doesn't use Wire library for parsing. 
> Instead it uses ANTLR. 
> As a part of the fix, we won't replace ANTLR with Wire library in 
> _nifi-confluent-protobuf-message-name-resolver_ module.
> Instead, schema cleanup will happen in [{_}StandardProtobufReader{_}, before 
> compilation|https://github.com/apache/nifi/blob/main/nifi-extension-bundles/nifi-protobuf-bundle/nifi-protobuf-services/src/main/java/org/apache/nifi/services/protobuf/StandardProtobufReader.java#L257].
>  *Cleaned up schemas will be stored into SchemaDefinitions and cached during 
> compilation,* _messageNameResolver_ will receive _SchemaDefinition_ with 
> already cleaned up schema.
> _Long term we might re-visit the decision to use ANTLR in name resolver._



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to