[ 
https://issues.apache.org/jira/browse/AVRO-2492?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16897250#comment-16897250
 ] 

Ryan Skraba commented on AVRO-2492:
-----------------------------------

Hello!  There's a remaining use for this method in protocol / messages.  I 
linked the original discussion from JIRA -- I stumbled across this.

It looks like the *implementation* of Schema.createRecord(List<Fields) method 
works: you can use the resulting anonymous record schema to serialize and 
deserialize data, but you can't share the schema via its JSON representation 
because it doesn't meet the specification name requirements.

For example, with the protocol defined in the spec: 
https://avro.apache.org/docs/1.9.0/spec.html#Sample+Protocol

The {{request}} attribute contains a list of "parameters" (a.k.a. fields) and 
the [implementation of the 
message|https://github.com/apache/avro/blob/2d3b1fe7efd865639663ba785877182e7e038c45/lang/java/avro/src/main/java/org/apache/avro/Protocol.java#L602]
 creates an anonymous record in order to send the data... BUT the schema is 
never sent between the caller and callee; they've already agreed via the 
protocol and they both know what to send/expect.  The Schema JSON 
representation is invalid, but the Java implementation of the Schema itself is 
usable.

We've stumbled across this more than a couple of times in our projects when 
creating an ephemeral schema that we only care about during the lifetime of a 
distributed job.  Unit tests and (sometimes) single-jvm operation appear to 
work, but when run on a cluster and the schema is actually turned to a string 
on one node and reparsed at another, we get a parser exception.

I think that it is a reasonable requirement to require users to name their 
records, and that it is probably reasonable to autogenerate a unique record 
name for protocol message parameters.


> Remove deprecated Schema createRecord from list method
> ------------------------------------------------------
>
>                 Key: AVRO-2492
>                 URL: https://issues.apache.org/jira/browse/AVRO-2492
>             Project: Apache Avro
>          Issue Type: Bug
>          Components: java
>            Reporter: Ismaël Mejía
>            Assignee: Ismaël Mejía
>            Priority: Minor
>             Fix For: 1.10.0
>
>
> This is a follow up of AVRO-2491 for the 1.10.0 release



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to