So this brings up a good discussion point. As Jeff points out, the Midonet 
plugin hasn't been actively supported for almost 5 years. At what point do we 
consider retiring unsupported plugins?


- Si


________________________________
From: Jeff Hair <j...@greenqloud.com>
Sent: Thursday, March 9, 2017 9:43 AM
To: dev@cloudstack.apache.org
Subject: Re: midonet-client and Guava dependency conflict

After doing some more digging, I have confirmed the following:

   - The midonet plugin is using the Maven Shade plugin to put a bunch of
   dependencies into itself.
   - The plugin hosted in this repository was last updated in 2013.
   - Most importantly: removing all the guava stuff out of the midonet
   plugin fixes this issue.

I have not had any success in applying
https://github.com/openwide-java/tomcat-classloader-ordered to get Tomcat
[https://avatars1.githubusercontent.com/u/1385131?v=3&s=400]<https://github.com/openwide-java/tomcat-classloader-ordered>

GitHub - openwide-java/tomcat-classloader-ordered: A 
...<https://github.com/openwide-java/tomcat-classloader-ordered>
github.com
README.md tomcat-classloader-ordered. A classloader for Apache Tomcat 8 which 
loads the jars of WEB-INF lib in alphabetical order. Prior to version 8, Apache 
Tomcat ...



to load its jars in alphabetical order, for whatever reason. I tried
putting the Loader in various context definition locations, but it refuses
to work. Any ideas?

Jeff


On Thu, Mar 9, 2017 at 1:43 PM, Jeff Hair <j...@greenqloud.com> wrote:

> Hi,
>
> I'm deploying 4.9.2.0 (not the vanilla version, but rather an upgraded
> version of our fork) on Tomcat 8. Management server startup fails with the
> following error:
>
> java.lang.IncompatibleClassChangeError: Found interface
> com.google.common.base.Equivalence, but class was expected
>
> I've traced this down to the OutOfBandServiceManagerImpl. More
> specifically, when it tries to build the hostAlertCache using Guava's
> CacheBuilder. Deep in Guava, it's calling an "identity()" method on the
> Equivalence class.  All of the Guava classes are coming from guava-19.0
> except for com/google/common/base/Equivalence.class. The Equivalence
> class is being loaded from the midonet jar for some reason, and that
> version does not have the method needed. Thus, the error.
>
> This is because Tomcat apparently does not load jars in alphabetical order
> anymore, starting with version 8. An open ticket for them to fix this is
> here: https://bz.apache.org/bugzilla/show_bug.cgi?id=57129
57129 – Regression. Load WEB-INF/lib jarfiles in 
...<https://bz.apache.org/bugzilla/show_bug.cgi?id=57129>
bz.apache.org
ASF Bugzilla – Bug 57129 Regression. Load WEB-INF/lib jarfiles in alphabetical 
order Last modified: 2016-03-17 09:59:50 UTC



>
> It could be possible to "fix" this by using a custom ClassLoader to force
> Tomcat to load things alphabetically (testing that right now--and not
> really succeeding), but the proper fix is to have the midonet client not be
> packaging guava with itself. Does anyone know why this is?
>
> Jeff
>

Reply via email to