[ODLPARENT-181] VerifyError in blueprint-maven-plugin with project using Guava SettableFuture & FluentFuture Created: 21/Dec/18  Updated: 06/Sep/21  Resolved: 06/Sep/21

Status: Resolved
Project: odlparent
Component/s: None
Affects Version/s: 4.0.2
Fix Version/s: None

Type: Bug Priority: Medium
Reporter: Michael Vorburger Assignee: Unassigned
Resolution: Won't Do Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

https://git.opendaylight.org/gerrit/#/c/78898/1 (note Patch Set 1) used to fail with:

[INFO] --- blueprint-maven-plugin:1.10.0:blueprint-generate (default) @ openflowplugin-impl ---
[INFO] Package org.opendaylight will be scanned
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:41 min
[INFO] Finished at: 2018-12-21T03:02:26+01:00
[INFO] Final Memory: 105M/1179M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.aries.blueprint:blueprint-maven-plugin:1.10.0:blueprint-generate (default) on project openflowplugin-impl: Execution default of goal org.apache.aries.blueprint:blueprint-maven-plugin:1.10.0:blueprint-generate failed: An API incompatibility was encountered while executing org.apache.aries.blueprint:blueprint-maven-plugin:1.10.0:blueprint-generate: java.lang.VerifyError: Bad return type
[ERROR] Exception Details:
[ERROR]   Location:
[ERROR]     org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.getFullyStarted()Lcom/google/common/util/concurrent/FluentFuture; @4: areturn
[ERROR]   Reason:
[ERROR]     Type 'com/google/common/util/concurrent/SettableFuture' (current frame, stack[0]) is not assignable to 'com/google/common/util/concurrent/FluentFuture' (from method signature)
[ERROR]   Current Frame:
[ERROR]     bci: @4
[ERROR]     flags: { }
[ERROR]     locals: { 'org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl' }
[ERROR]     stack: { 'com/google/common/util/concurrent/SettableFuture' }
[ERROR]   Bytecode:
[ERROR]     0x0000000: 2ab4 0001 b0                           
[ERROR] 
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.apache.aries.blueprint:blueprint-maven-plugin:1.10.0
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/home/vorburger/.m2/repository/org/apache/aries/blueprint/blueprint-maven-plugin/1.10.0/blueprint-maven-plugin-1.10.0.jar
[ERROR] urls[1] = file:/home/vorburger/.m2/repository/org/apache/xbean/xbean-finder-shaded/4.9/xbean-finder-shaded-4.9.jar
[ERROR] urls[2] = file:/home/vorburger/.m2/repository/org/apache/xbean/xbean-asm6-shaded/4.9/xbean-asm6-shaded-4.9.jar
[ERROR] urls[3] = file:/home/vorburger/.m2/repository/org/apache/aries/blueprint/blueprint-maven-plugin-spi/1.1.0/blueprint-maven-plugin-spi-1.1.0.jar
[ERROR] urls[4] = file:/home/vorburger/.m2/repository/org/apache/aries/blueprint/blueprint-maven-plugin-spring-handlers/1.0.0/blueprint-maven-plugin-spring-handlers-1.0.0.jar
[ERROR] urls[5] = file:/home/vorburger/.m2/repository/org/springframework/spring-context/3.1.4.RELEASE/spring-context-3.1.4.RELEASE.jar
[ERROR] urls[6] = file:/home/vorburger/.m2/repository/org/springframework/spring-beans/3.1.4.RELEASE/spring-beans-3.1.4.RELEASE.jar
[ERROR] urls[7] = file:/home/vorburger/.m2/repository/org/springframework/spring-tx/3.1.4.RELEASE/spring-tx-3.1.4.RELEASE.jar
[ERROR] urls[8] = file:/home/vorburger/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
[ERROR] urls[9] = file:/home/vorburger/.m2/repository/org/springframework/spring-aop/3.1.4.RELEASE/spring-aop-3.1.4.RELEASE.jar
[ERROR] urls[10] = file:/home/vorburger/.m2/repository/org/springframework/spring-asm/3.1.4.RELEASE/spring-asm-3.1.4.RELEASE.jar
[ERROR] urls[11] = file:/home/vorburger/.m2/repository/org/springframework/spring-core/3.1.4.RELEASE/spring-core-3.1.4.RELEASE.jar
[ERROR] urls[12] = file:/home/vorburger/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
[ERROR] urls[13] = file:/home/vorburger/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
[ERROR] urls[14] = file:/home/vorburger/.m2/repository/com/google/guava/guava/19.0/guava-19.0.jar
[ERROR] urls[15] = file:/home/vorburger/.m2/repository/org/apache/aries/blueprint/blueprint-maven-plugin-pax-cdi-handlers/1.0.0/blueprint-maven-plugin-pax-cdi-handlers-1.0.0.jar
[ERROR] urls[16] = file:/home/vorburger/.m2/repository/org/ops4j/pax/cdi/pax-cdi-api/0.8.0/pax-cdi-api-0.8.0.jar
[ERROR] urls[17] = file:/home/vorburger/.m2/repository/org/osgi/org.osgi.compendium/4.3.1/org.osgi.compendium-4.3.1.jar
[ERROR] urls[18] = file:/home/vorburger/.m2/repository/org/apache/maven/plugin-tools/maven-plugin-annotations/3.4/maven-plugin-annotations-3.4.jar
[ERROR] urls[19] = file:/home/vorburger/.m2/repository/javax/transaction/javax.transaction-api/1.2/javax.transaction-api-1.2.jar
[ERROR] urls[20] = file:/home/vorburger/.m2/repository/javax/enterprise/cdi-api/1.2/cdi-api-1.2.jar
[ERROR] urls[21] = file:/home/vorburger/.m2/repository/javax/el/javax.el-api/3.0.0/javax.el-api-3.0.0.jar
[ERROR] urls[22] = file:/home/vorburger/.m2/repository/javax/interceptor/javax.interceptor-api/1.2/javax.interceptor-api-1.2.jar
[ERROR] urls[23] = file:/home/vorburger/.m2/repository/javax/persistence/persistence-api/1.0.2/persistence-api-1.0.2.jar
[ERROR] urls[24] = file:/home/vorburger/.m2/repository/org/osgi/osgi.cmpn/6.0.0/osgi.cmpn-6.0.0.jar
[ERROR] urls[25] = file:/home/vorburger/.m2/repository/org/apache/aries/blueprint/blueprint-maven-plugin-annotation/1.3.0/blueprint-maven-plugin-annotation-1.3.0.jar
[ERROR] urls[26] = file:/home/vorburger/.m2/repository/org/sonatype/sisu/sisu-inject-bean/2.3.0/sisu-inject-bean-2.3.0.jar
[ERROR] urls[27] = file:/home/vorburger/.m2/repository/org/sonatype/sisu/sisu-guice/3.1.0/sisu-guice-3.1.0-no_aop.jar
[ERROR] urls[28] = file:/home/vorburger/.m2/repository/org/sonatype/sisu/sisu-guava/0.9.9/sisu-guava-0.9.9.jar
[ERROR] urls[29] = file:/home/vorburger/.m2/repository/org/sonatype/aether/aether-util/1.11/aether-util-1.11.jar
[ERROR] urls[30] = file:/home/vorburger/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
[ERROR] urls[31] = file:/home/vorburger/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
[ERROR] urls[32] = file:/home/vorburger/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
[ERROR] urls[33] = file:/home/vorburger/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
[ERROR] urls[34] = file:/home/vorburger/.m2/repository/org/apache/maven/wagon/wagon-http-lightweight/2.6/wagon-http-lightweight-2.6.jar
[ERROR] urls[35] = file:/home/vorburger/.m2/repository/org/apache/maven/wagon/wagon-http-shared/2.6/wagon-http-shared-2.6.jar
[ERROR] urls[36] = file:/home/vorburger/.m2/repository/org/jsoup/jsoup/1.7.2/jsoup-1.7.2.jar
[ERROR] urls[37] = file:/home/vorburger/.m2/repository/commons-io/commons-io/2.2/commons-io-2.2.jar
[ERROR] urls[38] = file:/home/vorburger/.m2/repository/org/osgi/org.osgi.core/4.3.1/org.osgi.core-4.3.1.jar
[ERROR] urls[39] = file:/home/vorburger/.m2/repository/org/slf4j/slf4j-jdk14/1.7.7/slf4j-jdk14-1.7.7.jar
[ERROR] urls[40] = file:/home/vorburger/.m2/repository/org/apache/maven/shared/maven-filtering/1.0-beta-4/maven-filtering-1.0-beta-4.jar
[ERROR] urls[41] = file:/home/vorburger/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar
[ERROR] urls[42] = file:/home/vorburger/.m2/repository/org/sonatype/plexus/plexus-build-api/0.0.7/plexus-build-api-0.0.7.jar
[ERROR] urls[43] = file:/home/vorburger/.m2/repository/org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar
[ERROR] urls[44] = file:/home/vorburger/.m2/repository/javax/transaction/cdi/javax.transaction.cdi-api/1.2-b03/javax.transaction.cdi-api-1.2-b03.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[project>org.opendaylight.openflowplugin:openflowplugin-impl:0.8.0-SNAPSHOT, parent: ClassRealm[maven.api, parent: null]]]
[ERROR] 
[ERROR] -----------------------------------------------------
[ERROR] 
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException


 Comments   
Comment by Michael Vorburger [ 21/Dec/18 ]

https://git.opendaylight.org/gerrit/#/c/78898/1..2/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java which switched a returned FluentFuture to just a Future fixed the problem.

I suspect this is probably because the blueprint-maven-plugin:1.10.0 uses Guava 19 (see urls[14] above), whereas we currently are on Guava 25.1 already. Maven seems to be too stupid to use different ClassLoaders for application VS plugin code...

In this particular case, using Future instead of FluentFuture was just fine. But this problem could bite us again in situations where we do want to use FluentFuture ... perhaps we could should Guava 25.1 as a dependency to blueprint-maven-plugin in odlparent?

skitt ?

Comment by Stephen Kitt [ 21/Dec/18 ]

Wow this is a tough one to fix right... I’m curious whether it’s Maven getting things wrong, or the plugin.

Comment by Robert Varga [ 06/Sep/21 ]

This is the plugin confusing its classpath with application classpath – i.e. a problem with a dead upstream plugin.

Comment by Robert Varga [ 06/Sep/21 ]

blueprint-maven-plugin is dead for all intents and purposes and we are eliminating its users in favor of OSGi DS. We won't be fixing this issue.

Generated at Wed Feb 07 20:27:51 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.