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]