ct created SLIDER-1249:
--------------------------

             Summary: Unable to build application package for Accumulo 1.8.0+
                 Key: SLIDER-1249
                 URL: https://issues.apache.org/jira/browse/SLIDER-1249
             Project: Slider
          Issue Type: Bug
          Components: app-package
    Affects Versions: Slider 0.92
            Reporter: ct
            Priority: Minor


I’ve had a few issues trying to build and test an application package for 
Accumulo 1.8.0 and 1.8.1. I’ve listed them below. I’ve found potential fixes 
for (1), (3) and (4) but am unsure how best to deal with (2).

Compiling with:
{code}
mvn clean package -pl app-packages/accumulo/ -Paccumulo-app-package-maven 
-Daccumulo.version=1.8.0 -Dpkg.version=1.8.0
{code}

(1) fails with:

{code}
[ERROR] Failed to execute goal on project slider-accumulo-app-package: Could 
not resolve dependencies for project 
org.apache.slider.packages:slider-accumulo-app-package:jar:0.93.0-incubating-SNAPSHOT:
 Failure to find org.apache.directory.jdbm:apacheds-jdbm1:bundle:2.0.0-M2 in 
https://repository.apache.org/content/groups/staging/...
{code}

apacheds-jdmb1 is a transitive dependency of accumulo-test and seems to require 
the org.apache.felix:maven-bundle-plugin. In Accumulo 1.7.3 this dependency was 
limited to the ‘test’ scope, but in Accumulo 1.8.0 it was moved into the 
compile scope, which is why it has become an issue.

(2) After adding the bundle plugin to the pom, the build then fails with:
{code}
[ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile 
(default-testCompile) on project slider-accumulo-app-package: Compilation 
failure: Compilation failure: 
[ERROR] 
/home/hadoop/slider-test/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloProxyIT.groovy:[20,34]
 1. ERROR in 
/home/hadoop/slider-test/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloProxyIT.groovy
 (at line 20)
[ERROR]         import org.apache.accumulo.proxy.TestProxyClient
[ERROR]                                          ^^^^^^^^^^^^^^^
[ERROR] Groovy:unable to resolve class org.apache.accumulo.proxy.TestProxyClient
{code}

In Accumulo 1.8.0, TestProxyClient was relocated from the accumulo-proxy 
artifact to accumulo-test, and from the org.apache.accumulo.proxy package to 
org.apache.accumulo.test.proxy. Changing the import allows the build to 
complete (but will break builds for previous versions of Accumulo).

Running functional tests with something similar to:
{code}
mvn clean verify -pl app-packages/accumulo/ 
-Paccumulo-app-package-maven,accumulo-funtest -Daccumulo.version=1.8.0 
-Dpkg.version=1.8.0 -Dslider.conf.dir=... -Dtest.app.resources.dir=...
{code}

(3) results in failed tests:
{code}
Tests in error: 
  AccumuloReadWriteIT>CommandTestBase.<clinit>:113 » 
java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
  
AccumuloReadWriteSSLIT.org.apache.slider.funtest.accumulo.AccumuloReadWriteSSLIT
 » java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
  AccumuloScriptIT.org.apache.slider.funtest.accumulo.AccumuloScriptIT » 
java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
  AccumuloScriptSSLIT.org.apache.slider.funtest.accumulo.AccumuloScriptSSLIT » 
java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
  AccumuloProxyIT.org.apache.slider.funtest.accumulo.AccumuloProxyIT » 
java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
  AccumuloMonitorSSLIT.org.apache.slider.funtest.accumulo.AccumuloMonitorSSLIT 
» java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
  AccumuloBasicIT.org.apache.slider.funtest.accumulo.AccumuloBasicIT » 
java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
Tests run: 7, Failures: 0, Errors: 7, Skipped: 0
{code}

The version of slf4j-log4j12 used by accumulo-server-base in 1.8.0 has been 
bumped from 1.7.5 to 1.7.21, also bumping the version of slf4j-api used by 
Slider to 1.7.21 allows the tests to run.

(4) Tests then fail with:
{code}
java.lang.NoSuchMethodError: 
org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Client.sendBaseOneway(Ljava/lang/String;Lorg/apache/thrift/TBase;)
{code}

Removing the explicit libthrift dependency from the accumulo package’s pom and 
letting the correct version be included via accumulo-server-base allows the 
tests to pass.




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

Reply via email to