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

Ryan Skraba commented on AVRO-2644:
-----------------------------------

I took a look at the bazel rule -- thanks!  It looks like it runs `avro-tools` 
directly as opposed to wrapping SpecificCompiler itself, so I imagine that it 
would have the same problem as a user running it on the CLI...

Do you know if file order is preserved in bazel rules?  Can the build script 
specify which avsc to compile first?  Or do we need to add an option like the 
avro-maven-plugin "imports" to support this type of avro-tools use?

(Either way, it doesn't affect the PR above...)

> Non-Deterministic avsc Directory Compilation
> --------------------------------------------
>
>                 Key: AVRO-2644
>                 URL: https://issues.apache.org/jira/browse/AVRO-2644
>             Project: Apache Avro
>          Issue Type: Bug
>            Reporter: Austin Cawley-Edwards
>            Priority: Minor
>
> {color:#222222}We're trying to use the `compile \{src dir} \{output dir}` 
> command in{color}
>  {color:#222222}`avro-tools` and finding that there are some 
> non-deterministic{color}
>  {color:#222222}behaviors between systems, depending on how the OS sorts 
> files.{color}
> {color:#222222}Example:{color}
>  {color:#222222}schemas/Component.avsc{color} 
>  {color:#222222}  - defines Component record type in the namespace 
> `com.test`{color}
> {color:#222222}schemas/Parent.avsc{color}
>  {color:#222222}  - defines a Parent record,  in the same `com.test` 
> namespace, with a{color}
>  {color:#222222}field of type `com.test.Component`{color}
> {color:#222222}With the command, `java -jar avro-tools-1.9.1.jar compile 
> schemas/{color}
>  {color:#222222}out-dir/`, some systems compile the directory in the order 
> Component,{color}
>  {color:#222222}Parent while others compile in the order Parent, Component. 
> The latter{color}
>  {color:#222222}fails as Component has not been defined when it is referenced 
> by{color}
>  {color:#222222}Parent.{color}
> {color:#222222}We have also tried using the IDL and importing the dependency 
> types,{color}
>  {color:#222222}and then converting them to avsc, and finally compiling the 
> entire{color}
>  {color:#222222}directory, but that fails as the generated avsc files embed/ 
> duplicate{color}
>  {color:#222222}the "Component" types each time it is used.{color}
> {color:#222222}OS:{color}
>  {color:#222222}Linux 857aaf92e059 4.15.0-70-generic #79-Ubuntu SMP Tue Nov 
> 12{color}
>  {color:#222222}10:36:11 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux{color}
> {color:#222222}Avro:{color}
>  {color:#222222}version 1.9.1{color} 
>  
>  
> Would a PR be accepted that enforces LANG=C semantics or would that have to 
> be shipped as a breaking change?
>  
> Coming from this thread in the mailing list: 
> [http://mail-archives.apache.org/mod_mbox/avro-user/201911.mbox/%3CCALGL%2BUDH03pCyKAQ5a%2B_fvwnUVougwwEXe8%2BHFAuR8Q%3D2cqYmw%40mail.gmail.com%3E]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to