[ 
https://issues.apache.org/jira/browse/AMBARI-21701?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Doroszlai, Attila updated AMBARI-21701:
---------------------------------------
    Status: Patch Available  (was: In Progress)

> Add check for import from relocated packages
> --------------------------------------------
>
>                 Key: AMBARI-21701
>                 URL: https://issues.apache.org/jira/browse/AMBARI-21701
>             Project: Ambari
>          Issue Type: Improvement
>          Components: ambari-server
>    Affects Versions: 3.0.0
>            Reporter: Doroszlai, Attila
>            Assignee: Doroszlai, Attila
>            Priority: Minor
>             Fix For: 3.0.0
>
>         Attachments: AMBARI-21701.patch
>
>
> Occasionally an import from {{org.apache.hadoop.metrics2.sink.relocated....}} 
> creeps into {{ambari-server}} source code, causing compile errors:
> {noformat}
> $ mvn -am -pl ambari-server clean test
> ...
> [ERROR] 
> ambari-server/src/test/java/org/apache/ambari/server/checks/AbstractCheckDescriptorTest.java:[39,71]
>  package org.apache.hadoop.metrics2.sink.relocated.google.common.collect does 
> not exist
> [ERROR] 
> ambari-server/src/test/java/org/apache/ambari/server/checks/AbstractCheckDescriptorTest.java:[114,34]
>  cannot find symbol
> [ERROR]   symbol:   variable Sets
> [ERROR]   location: class 
> org.apache.ambari.server.checks.AbstractCheckDescriptorTest
> {noformat}
> The problem is that the same code can be compiled if dependencies are already 
> installed in one's local Maven repository.
> {noformat}
> $ mvn -am -pl 
> ambari-metrics/ambari-metrics-common,ambari-serviceadvisor,ambari-views clean 
> install
> ...
> $ mvn -pl ambari-server clean test
> ...
> [INFO] BUILD SUCCESS
> {noformat}
> This succeeds because {{ambari-metrics-common}} installs a shaded uber jar 
> including the {{..relocated..}} packages, hence they are available when 
> compiling {{ambari-server}}.  On the other hand, when building from scratch 
> (selectively with {{-am -pl ...}}, or the entire multimodule project) 
> classpath contains {{ambari-metrics-common}} classes and individual 
> dependencies without relocation.
> The goal of this change is to add a checkstyle check to catch such imports at 
> build-time with both compilation methods.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to