mbutrovich opened a new pull request, #21680:
URL: https://github.com/apache/datafusion/pull/21680

   ## Which issue does this PR close?
   
   - Closes #21662.
   
   ## Rationale for this change
   
   #21663 removed the nested async block in 
`PushDecoderStreamState::transition` to fix a Stacked Borrows violation under 
miri. However, miri still flags the same violation because `&mut self` is still 
a single opaque borrow — inlining the async block alone doesn't let miri split 
the disjoint field borrows across the `.await` yield point.
   
   Comet CI reproduces this reliably: 
https://github.com/apache/datafusion-comet/actions/runs/24518967597/job/71671004017?pr=3916
   
   ## What changes are included in this PR?
   
   Destructure `self` into `decoder` and `reader` at the top of `transition()` 
so that miri can track them as independent borrows. This lets `reader` be 
borrowed across the `.await` without invalidating the subsequent use of 
`decoder`.
   
   ## Are these changes tested?
   
   Existing tests cover this code path. The fix is validated by miri passing in 
CI (the same test that currently fails: 
`test_nested_types_extract_missing_struct_names_missing_field`). We'll run 
Comet CI against this branch first to confirm the miri violation is resolved 
before merging.
   
   ## Are there any user-facing changes?
   
   No.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to