phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William Yang (JIRA)" <j...@apache.org>
Subject [jira] [Created] (PHOENIX-2908) phoenix-core depends on both antlr 3.5 and antlr 2.7.7
Date Wed, 18 May 2016 00:45:13 GMT
William Yang created PHOENIX-2908:
-------------------------------------

             Summary: 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


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)

Mime
View raw message