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

Santiago Medina commented on THRIFT-5953:
-----------------------------------------

Addressed in https://github.com/apache/thrift/pull/3414

> Rust codegen should support forward-compatible deserialization for union 
> fields in structs
> ------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-5953
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5953
>             Project: Thrift
>          Issue Type: Bug
>            Reporter: Santiago Medina
>            Priority: Major
>
> **Title**
> Rust codegen should support forward-compatible deserialization for union 
> fields in structs
> **Description**
> When generated Rust code deserializes a struct containing a union-typed 
> field, it can fail if the incoming payload contains a union variant that is 
> unknown to the local IDL.
> In the current behavior, the generated union deserializer skips unknown field 
> ids, but if no recognized union member is found it returns an error. That 
> error then propagates through the enclosing struct deserializer, causing the 
> whole struct read to fail.
> For forward compatibility, this case should be handled the same way as an 
> absent optional field: the enclosing struct should deserialize successfully 
> and the union field should remain unset.
> **Expected behavior**
> - Deserializing a struct with a union-typed field should succeed when the 
> wire payload contains only unknown variants for that union
> - The union field should remain unset
> - Other protocol and transport errors should continue to propagate normally



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

Reply via email to