Uploaded image for project: 'Slider'
  1. Slider
  2. SLIDER-1249

Unable to build application package for Accumulo 1.8.0+

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • Slider 0.92
    • None
    • app-package
    • None

    Description

      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:

      mvn clean package -pl app-packages/accumulo/ -Paccumulo-app-package-maven -Daccumulo.version=1.8.0 -Dpkg.version=1.8.0
      

      (1) fails with:

      [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/...
      

      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:

      [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
      

      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:

      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=...
      

      (3) results in failed tests:

      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
      

      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:

      java.lang.NoSuchMethodError: org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Client.sendBaseOneway(Ljava/lang/String;Lorg/apache/thrift/TBase;)
      

      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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            ctas582 ct
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: