Uploaded image for project: 'Puppet Server'
  1. Puppet Server
  2. SERVER-1803

Resolve org.ow2.asm conflict between core.async and jruby



    • Type: Task
    • Status: Closed
    • Priority: Normal
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: SERVER 5.0.0
    • Component/s: None
    • Labels:
    • Template:
    • Team:
      Systems Engineering
    • Sub-team:
    • Story Points:
    • Sprint:
      Server 2017-05-31
    • Release Notes:
      Not Needed
    • QA Risk Assessment:
      Needs Assessment


      Puppet Server has two dependencies on org.ow2.asm.* packages whose versions currently conflict with each other:

      1) puppetlabs/trapperkeeper includes the following transitive dependencies:

        [org.clojure/core.async "0.2.391"]
           [org.clojure/tools.analyzer.jvm "0.6.10"]
             [org.ow2.asm/asm-all "4.2"]

      2) jruby-core version 1.7.26 includes the following dependencies:

         [org.ow2.asm/asm-analysis "5.0.3"]
         [org.ow2.asm/asm-commons "5.0.3"]
           [org.ow2.asm/asm-tree "5.0.3"]
         [org.ow2.asm/asm-util "5.0.3"]
         [org.ow2.asm/asm "5.0.3"]

      The org.ow2.asm/asm-all package is a superset of the discrete asm* packages that jruby-core includes.

      jruby-core for the latest jruby9k release,, has its own vendored version of the asm* packages. It appears, however, that this will be replaced with the discrete org.ow2.asm ones in future jruby9k release, though.

      When running latest Puppet Server in 1.7.26 or mode, we haven't seen any test issues so far. Theoretically, though, we could see jruby-specific issues for 1.7.26 since the asm code that would be used is from version 4.2 instead of from the newer 5.0.3 that is bundled in JRuby 1.7.

      When running latest Puppet Server with a uberjar built from the current HEAD of the jruby branch, however, we would get a conflict on jruby code's attempt to use a signature for a method which doesn't exist in the older asm version 4.2 but does in the later 5.x releases.

      We should look into reworking the org.ow2.asm/asm dependencies so that a sufficiently recent one that will work with the JRuby 1.7 and 9k versions we are bundling will get used in the puppet-server-release uberjar - and also probably exclude the org.ow2.asm dependencies from the jruby-deps uberjars just so that we don't potentially have multiple versions of classes in two different uberjars on the classpath - which could lead to difficult to diagnose loading issues sometime in the future.


          Issue Links



              jeremy.barlow Jeremy Barlow
              jeremy.barlow Jeremy Barlow
              0 Vote for this issue
              1 Start watching this issue



                  Zendesk Support