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

Josh Elser commented on PHOENIX-2908:
-------------------------------------

bq. But stringtemplate (3.2.1) still depends on antlr 2.7.7, both in 
antlr-runtime 3.5.2 and 3.5

Yeah, wow. That's super confusing, isn't it :)

I'm really not sure what Phoenix needs WRT stringtemplate (stringtemplate3 or 
ST4) and antlr to antlr-runtime. At a glance, I'd say that your 
PHOENIX-2908_removeBothAntlr.patch would be the best (just limit us to 
antlr-runtime), but I would have to dig into exactly what we use out of Antlr 
(both at compile and runtime). I'd have to do some own verification of 
William's original analysis on usage before I come to my own conclusion.

> phoenix-core depends on both antlr 3.5 and antlr 2.7.7
> ------------------------------------------------------
>
>                 Key: PHOENIX-2908
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2908
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: William Yang
>            Priority: Minor
>              Labels: build
>             Fix For: 4.8.0
>
>         Attachments: PHOENIX-2908_removeBothAntlr.patch, 
> PHOENIX-2908_removeOnlyAntlr2.7.7.patch
>
>
> when executing 'mvn dependency:tree -pl=phoenix-core'. It shows that we 
> depends on both antlr-3.5.jar and antlr-2.7.7.jar.
> [INFO] org.apache.phoenix:phoenix-core:jar:4.6-adh6u-SNAPSHOT
> [INFO] +- org.antlr:antlr:jar:3.5:compile
> [INFO] |  \- org.antlr:ST4:jar:4.0.7:compile
> [INFO] +- org.antlr:antlr-runtime:jar:3.5:compile
> [INFO] |  \- org.antlr:stringtemplate:jar:3.2.1:compile
> [INFO] |     \- antlr:antlr:jar:2.7.7:compile
> Moreover, in the final jar file phoenix-4.6.0-HBase-1.1-client.jar, it 
> contains both antlr 3.5 and 2.7.7 too. Fortunately they have different 
> package name and will not cause unexpected problems. So it does not have any 
> negative effects, but it is a existed problem.
> https://github.com/antlr/stringtemplate4/issues/51
>  https://github.com/antlr/antlr3/issues/75
>  It seems that it is a known issue and has not been solved and never will be 
> for antlr 3. I don't know whether it still exists in antlr 4.
> I searched the source code and generated source code and i cannot find 
> explicit import for classes in antlr-*.jar, but only antlr-runtime instead.  
> Is antlr 3.5 necessary for phoenix?
>  I did the following things:
>  1. remove antlr 3.5 dependency from pom
>  2. add exclusion of stringtemplate for antlr-runtime (so it will not have 
> the transit dependency of antlr 2.7.7)
>  
> Then, both antlr 3.5 and antlr 2.7.7 disappeared. After that, all IT/UTs 
> passed.  Everything seems to be fine. 
> Moreover, I added java parameter '-verbose:class' for sqlline.py and see 
> which antlr class is loaded. The result shows that only classes in 
> antlr-runtime had been loaded, not any in antlr 3.5/2.7.7.
> So, I think it might be safe to remove dependency of antlr 3.5 and exclude 
> stringtemplate from antlr-runtime.  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to