mcohen01 / amazonica

A comprehensive Clojure client for the entire Amazon AWS api.
1k stars 202 forks source link

Dependency problem with jackson-core and requiresPropertyOrdering #135

Closed dvcrn closed 9 years ago

dvcrn commented 9 years ago

Hello,

when trying to use ring with amazonica, I am getting

Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z

My lein deps :tree


 [amazonica "0.3.22" :exclusions [[org.apache.httpcomponents/httpclient]]]
   [com.amazonaws/amazon-kinesis-client "1.1.0" :exclusions [[joda-time]]]
   [com.amazonaws/aws-java-sdk "1.9.33" :exclusions [[joda-time]]]
     [com.amazonaws/aws-java-sdk-autoscaling "1.9.33"]
     [com.amazonaws/aws-java-sdk-cloudformation "1.9.33"]
     [com.amazonaws/aws-java-sdk-cloudfront "1.9.33"]
     [com.amazonaws/aws-java-sdk-cloudhsm "1.9.33"]
     [com.amazonaws/aws-java-sdk-cloudsearch "1.9.33"]
     [com.amazonaws/aws-java-sdk-cloudtrail "1.9.33"]
     [com.amazonaws/aws-java-sdk-cloudwatch "1.9.33"]
     [com.amazonaws/aws-java-sdk-cloudwatchmetrics "1.9.33"]
     [com.amazonaws/aws-java-sdk-codedeploy "1.9.33"]
     [com.amazonaws/aws-java-sdk-cognitoidentity "1.9.33"]
     [com.amazonaws/aws-java-sdk-cognitosync "1.9.33"]
     [com.amazonaws/aws-java-sdk-config "1.9.33"]
     [com.amazonaws/aws-java-sdk-core "1.9.33"]
       [com.fasterxml.jackson.core/jackson-databind "2.3.2"]
         [com.fasterxml.jackson.core/jackson-annotations "2.3.0"]
         [com.fasterxml.jackson.core/jackson-core "2.3.2"]
       [commons-logging "1.1.3"]
     [com.amazonaws/aws-java-sdk-datapipeline "1.9.33"]
     [com.amazonaws/aws-java-sdk-directconnect "1.9.33"]
     [com.amazonaws/aws-java-sdk-dynamodb "1.9.33"]
     [com.amazonaws/aws-java-sdk-ec2 "1.9.33"]
     [com.amazonaws/aws-java-sdk-ecs "1.9.33"]
     [com.amazonaws/aws-java-sdk-elasticache "1.9.33"]
     [com.amazonaws/aws-java-sdk-elasticbeanstalk "1.9.33"]
     [com.amazonaws/aws-java-sdk-elasticloadbalancing "1.9.33"]
     [com.amazonaws/aws-java-sdk-elastictranscoder "1.9.33"]
     [com.amazonaws/aws-java-sdk-emr "1.9.33"]
     [com.amazonaws/aws-java-sdk-glacier "1.9.33"]
     [com.amazonaws/aws-java-sdk-iam "1.9.33"]
     [com.amazonaws/aws-java-sdk-importexport "1.9.33"]
     [com.amazonaws/aws-java-sdk-kinesis "1.9.33"]
     [com.amazonaws/aws-java-sdk-kms "1.9.33"]
     [com.amazonaws/aws-java-sdk-lambda "1.9.33"]
     [com.amazonaws/aws-java-sdk-logs "1.9.33"]
     [com.amazonaws/aws-java-sdk-machinelearning "1.9.33"]
     [com.amazonaws/aws-java-sdk-opsworks "1.9.33"]
     [com.amazonaws/aws-java-sdk-rds "1.9.33"]
     [com.amazonaws/aws-java-sdk-redshift "1.9.33"]
     [com.amazonaws/aws-java-sdk-route53 "1.9.33"]
     [com.amazonaws/aws-java-sdk-s3 "1.9.33"]
     [com.amazonaws/aws-java-sdk-ses "1.9.33"]
     [com.amazonaws/aws-java-sdk-simpledb "1.9.33"]
     [com.amazonaws/aws-java-sdk-simpleworkflow "1.9.33"]
     [com.amazonaws/aws-java-sdk-sns "1.9.33"]
     [com.amazonaws/aws-java-sdk-sqs "1.9.33"]
     [com.amazonaws/aws-java-sdk-ssm "1.9.33"]
     [com.amazonaws/aws-java-sdk-storagegateway "1.9.33"]
     [com.amazonaws/aws-java-sdk-sts "1.9.33"]
     [com.amazonaws/aws-java-sdk-support "1.9.33"]
     [com.amazonaws/aws-java-sdk-swf-libraries "1.9.33"]
     [com.amazonaws/aws-java-sdk-workspaces "1.9.33"]
   [com.taoensso/nippy "2.7.0"]
     [net.jpountz.lz4/lz4 "1.2.0"]
     [org.iq80.snappy/snappy "0.3"]
     [org.tukaani/xz "1.5"]
   [joda-time "2.2"]
   [org.clojure/algo.generic "0.1.2"]
   [robert/hooke "1.3.0"]
 [cljs-http "0.1.30"]
   [com.cognitect/transit-cljs "0.8.205"]
     [com.cognitect/transit-js "0.8.755"]
   [noencore "0.1.19"]
 [clojure-complete "0.2.3" :scope "test" :exclusions [[org.clojure/clojure]]]
 [com.cemerick/piggieback "0.1.5"]
 [com.taoensso/carmine "2.9.2" :exclusions [[com.taoensso/nippy] [net.jpountz.lz4/lz4]]]
   [com.taoensso/encore "1.23.1"]
   [com.taoensso/timbre "3.4.0"]
     [io.aviso/pretty "0.1.16"]
   [org.apache.commons/commons-pool2 "2.3"]
 [commons-codec "1.10"]
 [compojure "1.3.3"]
   [clout "2.1.1"]
     [instaparse "1.3.6" :exclusions [[org.clojure/clojure]]]
   [medley "0.5.5"]
   [org.clojure/tools.macro "0.1.5"]
   [ring/ring-codec "1.0.0"]
 [crypto-password "0.1.3"]
   [com.lambdaworks/scrypt "1.4.0"]
   [crypto-equality "1.0.0"]
   [crypto-random "1.2.0"]
   [org.mindrot/jbcrypt "0.3m"]
 [digest "1.4.4"]
 [jarohen/nomad "0.7.0"]
 [javax.servlet/servlet-api "2.5" :scope "test"]
 [korma "0.4.0"]
   [c3p0 "0.9.1.2"]
   [org.clojure/java.jdbc "0.3.5"]
 [lobos "1.0.0-beta3"]
 [org.clojure/clojure "1.6.0"]
 [org.clojure/clojurescript "0.0-3165"]
   [com.google.javascript/closure-compiler "v20150126"]
     [args4j "2.0.26"]
     [com.google.code.findbugs/jsr305 "1.3.9"]
     [com.google.code.gson/gson "2.2.4"]
     [com.google.guava/guava "18.0"]
     [com.google.javascript/closure-compiler-externs "v20150126"]
     [com.google.protobuf/protobuf-java "2.5.0"]
     [com.google.truth/truth "0.24"]
       [junit "4.10"]
         [org.hamcrest/hamcrest-core "1.1"]
   [org.clojure/data.json "0.2.6"]
   [org.clojure/google-closure-library "0.0-20140718-946a7d39"]
     [org.clojure/google-closure-library-third-party "0.0-20140718-946a7d39"]
   [org.mozilla/rhino "1.7R5"]
 [org.clojure/core.async "0.1.346.0-17112a-alpha"]
   [org.clojure/tools.analyzer.jvm "0.1.0-beta12"]
     [org.clojure/core.memoize "0.5.6"]
       [org.clojure/core.cache "0.6.3"]
         [org.clojure/data.priority-map "0.0.2"]
     [org.clojure/tools.analyzer "0.1.0-beta12"]
     [org.ow2.asm/asm-all "4.1"]
 [org.clojure/tools.nrepl "0.2.6" :scope "test" :exclusions [[org.clojure/clojure]]]
 [org.clojure/tools.reader "0.9.2"]
 [org.omcljs/om "0.8.8"]
   [cljsjs/react "0.12.2-5"]
 [org.postgresql/postgresql "9.2-1002-jdbc4"]
 [ring-mock "0.1.5" :scope "test"]
 [ring/ring-json "0.3.1" :exclusions [[cheshire]]]
 [ring "1.3.2"]
   [ring/ring-core "1.3.2"]
     [clj-time "0.6.0"]
     [commons-fileupload "1.3"]
     [commons-io "2.4"]
   [ring/ring-devel "1.3.2"]
     [clj-stacktrace "0.2.7"]
     [hiccup "1.0.5"]
     [ns-tracker "0.2.2"]
       [org.clojure/java.classpath "0.2.2"]
       [org.clojure/tools.namespace "0.2.4"]
   [ring/ring-jetty-adapter "1.3.2"]
     [org.eclipse.jetty/jetty-server "7.6.13.v20130916"]
       [org.eclipse.jetty.orbit/javax.servlet "2.5.0.v201103041518"]
       [org.eclipse.jetty/jetty-continuation "7.6.13.v20130916"]
       [org.eclipse.jetty/jetty-http "7.6.13.v20130916"]
         [org.eclipse.jetty/jetty-io "7.6.13.v20130916"]
           [org.eclipse.jetty/jetty-util "7.6.13.v20130916"]
   [ring/ring-servlet "1.3.2"]
 [secretary "1.2.3"]
   [com.cemerick/clojurescript.test "0.2.3-20140317.141743-3"]

I debugged a bit, and it turns out that this happens because amazonica wants aws-java-sdk version 1.9.33, which itself wants jackson-core 2.3.2.

I read through the sourcecode of jackson-core and found that since 2.3 the behavior of requiresPropertyOrdering got changed (https://github.com/FasterXML/jackson-core/blob/8891c0cd047c24f8c3cd8c8eebcd0fb1c562eb0c/src/main/java/com/fasterxml/jackson/core/JsonFactory.java#L387).

When overwriting the jackson-core and jackson-databind dependency with anything under 2.3 the error doesn't appear.

mcohen01 commented 9 years ago

Need more information as I can't reproduce on my end.

lein new bogus

and then including the dependencies you listed:

(defproject bogus "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.6.0"]
                 [org.clojure/tools.reader "0.9.2"]
                 [org.clojure/clojurescript "0.0-3165"]
                 [org.clojure/core.async "0.1.346.0-17112a-alpha"]
                 [org.omcljs/om "0.8.8"]
                 [ring/ring "1.3.2"]
                 [commons-codec/commons-codec "1.10"]
                 [digest "1.4.4"]
                 [com.fasterxml.jackson.core/jackson-core "2.2.3"]
                 [com.fasterxml.jackson.core/jackson-databind "2.2.3"]
                 [ring/ring-json "0.3.1" :exclusions [cheshire]]
                 [amazonica "0.3.22"]
                 [compojure "1.3.3"]
                 [korma "0.4.0"]
                 [org.postgresql/postgresql "9.2-1002-jdbc4"]
                 [lobos "1.0.0-beta3"]
                 [crypto-password "0.1.3"]
                 [cljs-http "0.1.30"]
                 [secretary "1.2.3"]
                 [com.cemerick/piggieback "0.1.5"]
                 [org.clojure/tools.nrepl "0.2.10"]
                 [image-resizer "0.1.6"]
                 [jarohen/nomad "0.7.0"]
                 [com.taoensso/carmine "2.9.2" :exclusions [com.taoensso/nippy net.jpountz.lz4/lz4]]
                 [lein-figwheel "0.3.1" :exclusions [org.clojure/clojure org.clojure/clojurescript org.codehaus.plexus/plexus-utils]]
                 ])
nREPL server started on port 51182 on host 127.0.0.1 - nrepl://127.0.0.1:51182
REPL-y 0.3.5, nREPL 0.2.6
Clojure 1.6.0
Java HotSpot(TM) 64-Bit Server VM 1.6.0_31-b04-411-11M4609
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e

user=> (require '[amazonica.aws.s3 :as s3])
nil
user=> (s3/list-buckets)
May 5, 2015 8:05:02 AM com.amazonaws.http.AmazonHttpClient logRequestId
INFO: x-amzn-RequestId: not available
[{:name "config-bucket-1223791622", :owner {:id "0c38b17f67449f408cdff85b2f0c2542b96a632f14ad6f6", :display-name "mcohen01"}, :creation-date #<DateTime 2015-01-11T11:13:01.000-08:00>}
......
dvcrn commented 9 years ago

Hmm I can't manage to reproduce it on an empty project as well. I checked the project where I found this problem initially and again, as soon as I remove

[com.fasterxml.jackson.core/jackson-core "2.2.3"]
[com.fasterxml.jackson.core/jackson-databind "2.2.3"]

The error is thrown again. I will look a bit around and see if I can get to the source of this.

HakimCassimallyBBC commented 7 years ago

This error still exists as of [amazonica "0.3.79"]. Unless we pin jackson (the values in @dvcrn's comment above work fine) we get an error the moment we try to (use '[amazonica.aws.s3transfer]).

mcohen01 commented 7 years ago

lein new bogus cd bogus vi project.clj ;; add amazonica dep lein repl user=> (use '[amazonica.aws.s3transfer]) nil

HakimCassimallyBBC commented 7 years ago

Hmm, but presumably if you already had a version of jackson that is < 2.3, your lein would be using that?

e.g. if I start to try a minimal test-case (using boot, as that's what we work with), I get:

$ boot -d seancorfield/boot-new new -t app -n bogus
Retrieving maven-metadata.xml from https://clojars.org/repo/
Retrieving boot-new-0.4.7.pom from https://clojars.org/repo/
Retrieving boot-new-0.4.7.jar from https://clojars.org/repo/ (44k)
Retrieving jackson-core-2.2.3.pom from https://repo1.maven.org/maven2/ (6k)
Retrieving oss-parent-10.pom from https://repo1.maven.org/maven2/ (23k)
Retrieving jackson-databind-2.2.3.pom from https://repo1.maven.org/maven2/ (5k)
Retrieving oss-parent-11.pom from https://repo1.maven.org/maven2/ (23k)
Retrieving jackson-annotations-2.2.3.pom from https://repo1.maven.org/maven2/ (1k)
Retrieving jackson-annotations-2.2.3.jar from https://repo1.maven.org/maven2/ (33k)
Retrieving jackson-databind-2.2.3.jar from https://repo1.maven.org/maven2/ (846k)
Retrieving jackson-core-2.2.3.jar from https://repo1.maven.org/maven2/ (188k)
Retrieving stencil-0.5.0.pom from https://clojars.org/repo/
Retrieving scout-0.1.0.pom from https://clojars.org/repo/
Retrieving quoin-0.1.2.pom from https://clojars.org/repo/
Retrieving stencil-0.5.0.jar from https://clojars.org/repo/ (15k)
Retrieving scout-0.1.0.jar from https://clojars.org/repo/ (4k)
Retrieving quoin-0.1.2.jar from https://clojars.org/repo/ (4k)
Generating a project called bogus based on the 'app' template.

Note that this immediately uses jackson 2.2.3 even though it's a new project, because I already have it cached in my ~/.m2. Could that be why you're not able to replicate the problem? (Or, alternatively, does it signify that I'm doing something wrong with my setup?)

HakimCassimallyBBC commented 7 years ago

NB: This issue still exists with latest "0.3.103" in a new project.

mcohen01 commented 7 years ago

my build.boot looks like:

(set-env!
  :resource-paths #{"src"}
  :dependencies '[[amazonica "0.3.102"]])

(task-options!
  pom {:project 'foobar
       :version "0.1.0"}
  jar {:manifest {"Foo" "bar"}})

boot repl

(require '[amazonica.aws.s3transfer :as s3t])

boot.user=> (s3t/show-functions)

abort-multipart-uploads
add-listener
client-class
copy
download
download-directory
get-amazon-s3-client
get-amazon-s3client
get-configuration
resume-download
resume-upload
set-configuration
show-functions
shutdown-now
transfer
upload
upload-directory
upload-file-list
wait
$ ls -al ~/.m2/repository/com/fasterxml/jackson/core/jackson-core/
total 0
drwxr-xr-x  24 mcohen  410487729  816 Apr  3 14:21 .
drwxr-xr-x   5 mcohen  410487729  170 Mar  1  2016 ..
drwxr-xr-x   5 mcohen  410487729  170 Dec  9  2016 2.0.0
drwxr-xr-x   5 mcohen  410487729  170 Dec  9  2016 2.0.6
drwxr-xr-x   5 mcohen  410487729  170 Mar  8  2016 2.1.1
drwxr-xr-x   5 mcohen  410487729  170 May 26  2016 2.1.2
drwxr-xr-x   5 mcohen  410487729  170 Dec 27 10:28 2.1.3
drwxr-xr-x   7 mcohen  410487729  238 May 26  2016 2.1.4
drwxr-xr-x   7 mcohen  410487729  238 Dec 14 16:07 2.2.1
drwxr-xr-x   5 mcohen  410487729  170 Apr  3 14:21 2.2.3
drwxr-xr-x   7 mcohen  410487729  238 Dec  9  2016 2.3.1
drwxr-xr-x   5 mcohen  410487729  170 May 26  2016 2.3.2
drwxr-xr-x   7 mcohen  410487729  238 Mar  1  2016 2.3.3
drwxr-xr-x   7 mcohen  410487729  238 Jul 19  2016 2.4.1
drwxr-xr-x   5 mcohen  410487729  170 Aug 24  2016 2.4.2
drwxr-xr-x   7 mcohen  410487729  238 Apr 17  2016 2.4.4
drwxr-xr-x   7 mcohen  410487729  238 Mar  1  2016 2.5.3
drwxr-xr-x   7 mcohen  410487729  238 May 29  2016 2.5.4
drwxr-xr-x   7 mcohen  410487729  238 May 29  2016 2.6.6
drwxr-xr-x   7 mcohen  410487729  238 Aug 15  2016 2.6.7
drwxr-xr-x   7 mcohen  410487729  238 Jul 18  2016 2.7.2
drwxr-xr-x   5 mcohen  410487729  170 Apr  3 14:21 2.7.3
drwxr-xr-x   7 mcohen  410487729  238 Apr  3 14:22 2.7.5
drwxr-xr-x   7 mcohen  410487729  238 Nov 17  2016 2.7.6