You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Ji Liu (JIRA)" <ji...@apache.org> on 2019/06/20 02:26:00 UTC

[jira] [Comment Edited] (ARROW-5579) [Java] shade flatbuffer dependency

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

Ji Liu edited comment on ARROW-5579 at 6/20/19 2:25 AM:
--------------------------------------------------------

[~emkornfield@gmail.com] Any update for this? I do have some new thoughts, I tried two different ways:

1、add arrow-shaded module and relocate package, then add this dependency in arrow-format instead of flatbuffers, but in flatbuffer-generated code the import is still origin package path and cause error.

2、Another approach is relocate package only in arrow-format since other modules depends on this and replace "com.google.flatbuffers.*" such imports with new relocated path such as "arrow.format.com.google.flatbuffers.*", in this way all arrow-related modules use the same flatbuffers and will not conflict with user applications. In this way, maven build fine but seems Intellij not support resolve shaded dependencies(see [https://youtrack.jetbrains.com/issue/IDEA-93855]), so manually run tests still cause errors which is still a big problem.:(

New test code can be seen in my branch. Thanks


was (Author: tianchen92):
[~emkornfield@gmail.com] Any update for this? I do have some new thoughts, I tried two different ways:

1、add arrow-shaded module and relocate package, then add this dependency in arrow-format instead of flatbuffers, but in flatbuffer-generated code the import is still origin package path and cause error.

2、Another approach is relocate package only in arrow-format since other modules depends on this and replace "com.google.flatbuffers.*" such imports with new relocated path such as "arrow.format.com.google.flatbuffers.*", in this way all arrow-related modules use the same flatbuffers and will not conflict with user applications. In this way, maven build fine but seems Intellij not support resolve shaded dependencies(see [https://youtrack.jetbrains.com/issue/IDEA-93855]), so manually run tests still cause errors which is still a big problem.:(

> [Java] shade flatbuffer dependency
> ----------------------------------
>
>                 Key: ARROW-5579
>                 URL: https://issues.apache.org/jira/browse/ARROW-5579
>             Project: Apache Arrow
>          Issue Type: Task
>          Components: Java
>            Reporter: Pindikura Ravindra
>            Assignee: Micah Kornfield
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 0.14.0
>
>          Time Spent: 2h
>  Remaining Estimate: 0h
>
> Reported in a [github issue|[https://github.com/apache/arrow/issues/4489]] 
>  
> After some [discussion|https://github.com/google/flatbuffers/issues/5368] with the Flatbuffers maintainer, it appears that FB generated code is not guaranteed to be compatible with _any other_ version of the runtime library other than the exact same version of the flatc used to compile it.
> This makes depending on flatbuffers in a library (like arrow) quite risky, as if an app depends on any other version of FB, either directly or transitively, it's likely the versions will clash at some point and you'll see undefined behaviour at runtime.
> Shading the dependency looks to me the best way to avoid this.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)