Github user JoshRosen commented on the pull request:

    https://github.com/apache/spark/pull/9503#issuecomment-154369560
  
    I think that the test failures that occurred earlier were due to an older 
incompatible version of ASM being pulled in via Jersey. From a binary 
compatibility point of view, it should be okay to upgrade from Jersey 1.9 to 
1.19: 
    
    - [japi-compliance-checker](https://github.com/lvc/japi-compliance-checker) 
reports no source or binary compatibility problems for `jersey-server` and 
`jersey-json`.
    - Jersey 1.10's major breaking change was moving the servlet-related 
classes into a separate `jersey-servlet` artifact, so I added a dependency on 
that class: https://blogs.oracle.com/japod/entry/jersey_1_10_is_released
    - In Jersey 1.19, `jersey-core` removed the `JAX-RS 1.1` classes (see 
http://blog.dejavu.sk/2015/02/13/jersey-1-19-is-released/), which results in 
the JAPI checker labeling it as 100% incompatible, but the 
`javax.ws.rs:jsr311-api:1.1.1` transitive dependency should automatically pull 
those classes in.
    
    Older Jersey release notes can be found at 
https://github.com/jersey/jersey-1.x/wiki/Release-Notes.
    
    I'm actually a bit suspicious that the JAPI checker didn't complain about 
the removal of the servlet classes from `jersey-server`...
    
    What gives me pause, though, is the fact that I found an old Hadoop JIRA 
discussing upgrading to 1.19 as part of a Java 8 compatibility effort, where it 
appears that they ran into a number of problems due to incompatible 
_behavioral_ changes: 
https://issues.apache.org/jira/browse/HADOOP-9613?focusedCommentId=14972906&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14972906
    
    The ASM conflict stems from the fact that the Spotify Docker client depends 
on `jnr-unixsocket`, which, in turn, depends on `jnr-ffi`, which uses ASM 5, 
which is incompatible with the ASM 3 version required by Jersey. This conflict 
is slightly hard to spot because the Maven artifact names changed between these 
releases, so Maven doesn't detect the conflict.
    
    I suppose one option would be to just ditch the Spotify Docker client in 
favor of scripting over the Docker command-line or JSON APIs (or to switch to 
another Docker client library). Another approach would be to try to exclude the 
ASM 3.x dependency in tests.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to