I found the JIRA and an issue reporting this bug a while back. It's still open. 
Adding a link for future searchers:
https://issues.apache.org/jira/browse/THRIFT-4086
Thanks.
hernan

On Thu, May 26, 2022, at 9:35 PM, hernan wrote:
> Hello, hope this is an okay place to reach out. I ran into an odd issue with 
> the Thrift compiler today that I think may be a bug:
> 
> https://github.com/nanreh/thrift_struct_refs
> 
> As the README says, I have two Thrift structs, Parent and Child. Parent has a 
> field of type Child.
> 
> When I define them in the order Child > Parent, I get the code (Java) I 
> expect.
> When I define them in the order Parent > Child, I get different Java code 
> which looks incorrect.
> 
> Fortunately, the diff is rather small and I only noticed it recently after 
> years of using Thrift rather heavily because I need the metadata in the 
> generated code for a new project I'm working on. I'm not sure how to feel 
> about the missing `validate()` call in the "bad" case here but I'm guessing 
> that might be problematic under the right circumstances.
> 
> This issue can be worked around when you have one struct refer to another 
> like this example (by ordering them carefully). But it's impossible to work 
> around when you have two structs that refer to each other (a situation I 
> encounter regularly).
> 
> The Makefile in this sample repo is a simple test. The `out` folder has the 
> results, including the diff.
> 
> I'm happy to help address this issue. But I would need some time and hand 
> holding to get up to speed on the compiler's implementation and what a 
> possible fix would look like.
> 
> Thanks.
> hernan
> 

Reply via email to