lidavidm commented on PR #14082:
URL: https://github.com/apache/arrow/pull/14082#issuecomment-1379461625

   Ok, given the Protobuf conflict I think this has to be disabled in the 
wheels. I think we can try to enable only in Conda for now. 
   
   The issue is that both Substrait and Flight SQL use the 'standard' 
`google.protobuf.Any`, so both shared libraries will generate code for it and 
try to initialize it with the Protobuf runtime when loaded. But Protobuf then 
crashes because it doesn't expect you to load the same definition twice.
   
   @westonpace do you have any thoughts on protobuf packaging? I see a few 
possible solutions:
   
   - Split out all protobuf code in Arrow into a single shared object that 
other libraries depend on. (I think this is the generally recommended path, but 
will complicate our CMake.) We already sort of do this with Substrait, from 
what I see, so we'd 'just' have to share this with Flight and Flight SQL.
   - See if we can enable LITE_RUNTIME for one or both Protobufs. (This 
requires editing the Protobuf definitions.) This _apparently_ reduces the 
amount of global shenanigans that Protobuf does but also disables reflection 
and doesn't seem to guarantee that it will fix the solution.


-- 
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]

Reply via email to