taoensso / sente

Realtime web comms library for Clojure/Script
https://www.taoensso.com/sente
Eclipse Public License 1.0
1.74k stars 193 forks source link

1.3.0 and 1.4.0-alpha2 compile error #108

Closed huahaiy closed 9 years ago

huahaiy commented 9 years ago

java.lang.RuntimeException: No such var: enc/chan?, compiling:(taoensso/sente.clj:174:9)

But 1.2.0 does not have this problem.

In the souce,

[taoensso.encore :as enc :refer (have? have have-in swap-in! reset-in! swapped)]

chan? doesn't seem to be referred. Is that the reason?

sritchie commented 9 years ago

What version of encore do you have? Can you check with lein deps :tree? If you're explicitly including it you'll need to bump.

huahaiy commented 9 years ago

I explicitly includes encore 1.21.0. There's no conflict in lein deps :tree regarding sente.

[com.taoensso/encore "1.21.0"] [org.clojure/tools.reader "0.8.13"] [com.taoensso/sente "1.2.0"] [org.clojure/core.async "0.1.346.0-17112a-alpha"] [com.taoensso/timbre "3.4.0"] [io.aviso/pretty "0.1.16"]

If I replace 1.2.0 with either 1.3.0 other 1.4.0-alpah2, I got the exception above.

ptaoussanis commented 9 years ago

Hi Huaha,

Possible causes of this error could be:

If you've ruled out an insufficient encore dependency, then something is preventing the clojure.core.async ns from being available when encore is being compiled.

I'd double check that you've got a core.async dependency in your project.clj, and try lein clean to clear out inconsistent build artefacts.

If that doesn't help, please post your project.clj here.

huahaiy commented 9 years ago
(defproject juji "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure                     "1.7.0-alpha5"]
                 [org.clojure/core.async                  "0.1.346.0-17112a-alpha"] 
                 [org.clojure/tools.cli                   "0.3.1"]
                 [cider/cider-nrepl                       "0.8.2"]
                 [com.fasterxml.jackson.core/jackson-core "2.4.4"]
                 [yesql                                   "0.5.0-beta2"]
                 ;;
                 [com.taoensso/encore                     "1.21.0"]
                 [com.taoensso/sente                      "1.3.0"]
                 [com.taoensso/timbre                     "3.4.0"]
                 [org.clojure/clojurescript               "0.0-2913"] 
                 ;; 
                 [postgres-component                      "0.1.1"]
                 [cassandra-component                     "0.1.0"]
                 [kafka-component                         "0.1.3" 
                  :exclusions [org.clojure/tools.reader com.taoensso/encore]]
                 [clj-sendy                               "0.1.2"]
                 [org.clojure/core.cache                  "0.6.4"]
                 [org.clojure/core.memoize                "0.5.7" 
                  :exclusions  [org.clojure/core.cache]]
                 ;;
                 [com.stuartsierra/component              "0.2.2"]
                 [environ                                 "1.0.0"]
                 ;;
                 [incanter/incanter-core                  "1.9.0"]
                 [bigml/sampling                          "3.0"]
                 ;; 
                 [org.clojure/tools.nrepl                 "0.2.7"]
                 [figwheel                                "0.2.3-SNAPSHOT"]
                 ;[com.taoensso/carmine                   "2.9.0"]
                 [http-kit                                "2.1.19"] 
                 [org.apache.httpcomponents/httpclient    "4.4"]
                 ;; 
                 [com.mchange/c3p0                        "0.9.5"]
                 [org.postgresql/postgresql               "9.3-1102-jdbc41"]
                 ;[org.postgis/postgis-jdbc               "1.3.3"]
                 [clojurewerkz/cassaforte                 "2.0.0"]
                 ;;
                 [org.twitter4j/twitter4j-core            "4.0.2"]
                 [org.facebook4j/facebook4j-core          "2.2.2"]
                 [commons-validator                       "1.4.1"]
                 [commons-codec                           "1.10"]
                 [joda-time                               "2.7"]
                 ;; 
                 [compojure                               "1.3.2"]  
                 [enlive                                  "1.1.5"]
                 [ring                                    "1.3.2" 
                  :exclusions  [org.clojure/java.classpath]]
                 [ring/ring-defaults                      "0.1.4"]  
                 [ring/ring-codec                         "1.0.0"]
                 [hiccup                                  "1.0.5"]  
                 [clj-http                                "1.0.1"]
                 [com.cemerick/friend                     "0.2.1"
                  :exclusions  [org.apache.httpcomponents/httpclient]]
                 [friend-oauth2                           "0.1.3" 
                  :exclusions  [org.clojure/java.classpath]]
                 [clj-oauth                               "1.5.2"]
                 [bouncer                                 "0.3.2"]
                 [com.maxmind.geoip/geoip-api             "1.2.14"]
                 [crypto-password                         "0.1.3"]
                 [com.draines/postal                      "1.11.3"]
                 ;;
                 [clojure-csv/clojure-csv                 "2.0.1"]
                 [clj-time                                "0.9.0"]
                 [clj-aws-s3                              "0.3.10"
                  :exclusions  [javax.mail/mail 
                                com.sun.jmx/jmxri 
                                jline joda-time 
                                com.sun.jdmk/jmxtools 
                                javax.jms/jms]]
                 [com.cognitect/transit-clj               "0.8.267"]
                 [com.cognitect/transit-cljs              "0.8.205"]] 

  :main juji.core

  :plugins [;[com.keminglabs/cljx  "0.4.0"]
            [lein-figwheel "0.2.3-20150208.002551-3" 
             :exclusions  [org.codehaus.plexus/plexus-utils]]
            [lein-cljsbuild       "1.0.4"]] 

  :jvm-opts ["-server" "-XX:+CMSClassUnloadingEnabled" 
             "-XX:+UseConcMarkSweepGC" "-Xms2G" "-Xmx6G" 
             "-XX:-OmitStackTraceInFastThrow"
             "-Djava.awt.headless=true"]

  :source-paths  ["src/clj"] 
  :java-source-paths  ["src/java"] 

  ;:hooks [cljx.hooks leiningen.cljsbuild]
  :hooks [leiningen.cljsbuild]

  ;:cljx {:builds 
         ;[{:source-paths  ["src/cljx"] :rules :clj  :output-path "target/classes"}
          ;{:source-paths  ["src/cljx"] :rules :cljs :output-path "target/classes"}]} 

  :cljsbuild {:builds ; clojurescript source 
              [{:id :main 
                :source-paths ["src/cljs"]
                :compiler {:output-to "resources/public/js/compiled/main.js"
                           :output-dir "resources/public/js/compiled/out"
                           ;:optimizations :whitespace 
                           ;:optimizations :advanced
                           ;:optimizations :simple
                           :optimizations :none
                           ;:pretty-print true
                           :source-map true}}]}

  :figwheel {:http-server-root "public" 
             :server-port 3449         
             :css-dirs  ["resources/public/assets/css"]}

  ;:aliases {"build-once"  ["do" "cljx" "once," "cljsbuild" "once"]
  :aliases {"build-once"  ["do" "cljsbuild" "once"]
            "start-dev"  ["repl" ":headless"]} 

  :repositories [["sonatype"  
                  {:url "http://oss.sonatype.org/content/repositories/releases"
                   :snapshots false}]
                 ["private" 
                  {:url "s3p://juji-mvn-repository/releases/"
                   :username :env :passphrase :env}]])
ptaoussanis commented 9 years ago

And to double-check: lein clean in your project doesn't help?

huahaiy commented 9 years ago

lein clean does not help.

ptaoussanis commented 9 years ago

I'm reaching at straws here:

  1. Does calling (require 'clojure.core.async) at your project's REPL work?
  2. I'm not familiar with "-XX:+CMSClassUnloadingEnabled". Try disable it?
  3. I'm not familiar with Figwheel. Do you get the same error at your project's REPL if you disable Figwheel?
  4. What happens when you try run the ref example? If that works, it'd be useful to try disable any unusual/unstable tools (buggy Leiningen plugins or middleware are especially prone to causing these kinds of errors).
stephenbrady commented 9 years ago

I'm running into a similar compile issue. Running sente 1.3.0, I get:

clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Unable to resolve symbol: loop_27294 in this context, compiling:(taoensso/sente.clj:1073:5)

I'm also getting the error with 1.4 beta.

I've tried a number of dependency orderings and exclusions but to no avail.

It does smell like an interaction with the core async dependency load ordering. Digging further, I'm wondering if the compile-if in encore around the chan? could be a problem, which I'm assuming you've done to eliminate core async as an explicit dependency in encore?

Thanks.

ptaoussanis commented 9 years ago

@stephenbrady Hi Stephen, a few questions:

  1. You've confirmed that lein clean definitely does not help? This solves 80%+ of these kinds of issues.
  2. Are you running AOT?
  3. What happens when you run the reference example project?
  4. If the ref example project works and yours does not, can you identify any tooling differences that might be having an effect (LightTable, Figwheel, etc.)?
stephenbrady commented 9 years ago
  1. Correct, lein clean does not help.
  2. No AOT
  3. I have tried it on a clean project with no other dependencies; Sente compiles fine.
  4. I'm seeing the compile error on lein repl. Just lein repl with my project.clj in the repl context then calling use on Sente.

In any case, I just figured out the issue. I have clojure core match, which pulls in a relatively recent org.clojure/tools.analyzer.jvm. core async also pulls in org.clojure/tools.analyzer.jvm but a very old version. Excluding analyzer.jvm from core.match resolved the compile break with sente.

Transitive dependencies FTW.

@huahaiy you might want to see if any of your project's deps are pulling in analyzer.jvm, most likely transitively given what it does.

ptaoussanis commented 9 years ago

Hey Stephen, really appreciate you tracking down the issue. Will try investigate further from my end later this week.

ptaoussanis commented 9 years ago

Hi @stephenbrady, any chance you could provide some more details re: what led you to the conclusion that org.clojure/tools.analyzer.jvm was causing your trouble?

Can't seem to reproduce any trouble on my end with any version of org.clojure/tools.analyzer.jvm.

Thanks!

stephenbrady commented 9 years ago

No problem. The simplest way to repro is to use this project.clj:

(defproject sente-test "0.1.0-SNAPSHOT" :dependencies [[org.clojure/clojure "1.6.0"] [com.taoensso/sente "1.3.0"] [org.clojure/tools.analyzer.jvm "0.6.6"]])

Then, lein repl in and call (use 'taoensso.sente).

If you then downgrade the version of tools.analyzer.jvm to 0.1.0-beta12, which then matches the version currently found in core.async 0.1.346.0-17112a-alpha, the problem will resolve.

stephenbrady commented 9 years ago

@ptaoussanis This core.async JIRA is informative: http://dev.clojure.org/jira/browse/ASYNC-86

ptaoussanis commented 9 years ago

(defproject sente-test "0.1.0-SNAPSHOT" :dependencies [[org.clojure/clojure "1.6.0"] [com.taoensso/sente "1.3.0"] [org.clojure/tools.analyzer.jvm "0.6.6"]])

That's perfect, thanks.

First look appears to show that this is just an issue with core.async + the new tools.analyzer. I.e. don't think this is anything particular to Sente; just happens to be that Sente uses core.async. Will dig a little more.

stephenbrady commented 9 years ago

Yep, definitely, it's not a sente issue, but it does force the transitive issue to surface.

ptaoussanis commented 9 years ago

@ptaoussanis This core.async JIRA is informative: http://dev.clojure.org/jira/browse/ASYNC-86

Aha, you beat me to it :-)

So, yeah - not sure if the loop error is related to @huahaiy's, but definitely handy to have this info around since it's likely others will run into it.

Thanks again for your assistance with this, much appreciated!

ptaoussanis commented 9 years ago

@huahaiy Any update on the steps suggested here, or can I close this issue?

stephenbrady commented 9 years ago

Sure thing!

huahaiy commented 9 years ago

Please do close. Thanks a lot.

ptaoussanis commented 9 years ago

@huahaiy Great, thanks! May I ask what the trouble/solution was in the end? Did you identify a cause?

danielsz commented 9 years ago

I hit the same error message as the OP:

clojure.lang.ExceptionInfo: No such var: enc/chan?
    data: {:file "taoensso/sente.clj", :line 180}

org.clojure/tools.analyzer.jvm is at 0.1.0-beta12 though.

Here is the dependency graph:

adzerk/boot-cljs "0.0-2814-4" :scope "test"
adzerk/boot-reload "0.2.6" :scope "test"
clj-http "1.1.0"
├── cheshire "5.4.0" :exclusions [[org.clojure/clojure]]
│   ├── com.fasterxml.jackson.core/jackson-core "2.4.4"
│   ├── com.fasterxml.jackson.dataformat/jackson-dataformat-cbor "2.4.4"
│   ├── com.fasterxml.jackson.dataformat/jackson-dataformat-smile "2.4.4"
│   └── tigris "0.1.1"
├── com.cognitect/transit-clj "0.8.269" :exclusions [[org.clojure/clojure]]
│   └── com.cognitect/transit-java "0.8.276"
│       ├── com.fasterxml.jackson.datatype/jackson-datatype-json-org "2.3.2"
│       │   └── com.fasterxml.jackson.core/jackson-databind "2.3.2"
│       │       └── com.fasterxml.jackson.core/jackson-annotations "2.3.0"
│       ├── org.apache.directory.studio/org.apache.commons.codec "1.8"
│       └── org.msgpack/msgpack "0.6.10"
│           ├── com.googlecode.json-simple/json-simple "1.1.1" :exclusions [[junit]]
│           └── org.javassist/javassist "3.18.1-GA"
├── commons-io "2.4" :exclusions [[org.clojure/clojure]]
├── crouton "0.1.2" :exclusions [[org.clojure/clojure]]
│   └── org.jsoup/jsoup "1.7.1"
├── org.apache.httpcomponents/httpclient "4.4" :exclusions [[org.clojure/clojure]]
│   └── commons-logging "1.2"
├── org.apache.httpcomponents/httpcore "4.4.1" :exclusions [[org.clojure/clojure]]
├── org.apache.httpcomponents/httpmime "4.4" :exclusions [[org.clojure/clojure]]
├── org.clojure/tools.reader "0.8.16" :exclusions [[org.clojure/clojure]]
├── potemkin "0.3.12" :exclusions [[org.clojure/clojure]]
│   ├── clj-tuple "0.1.7"
│   └── riddley "0.1.7"
└── slingshot "0.12.2" :exclusions [[org.clojure/clojure]]
cljs-ajax "0.3.11"
├── com.cognitect/transit-cljs "0.8.205"
│   └── com.cognitect/transit-js "0.8.755"
├── net.colourcoding/poppea "0.2.0"
│   └── spyscope "0.1.3"
└── org.clojure/clojurescript "0.0-2850"
    ├── com.google.javascript/closure-compiler "v20140625"
    │   ├── args4j "2.0.26"
    │   ├── com.google.code.findbugs/jsr305 "1.3.9"
    │   ├── com.google.guava/guava "17.0"
    │   ├── com.google.javascript/closure-compiler-externs "v20140625"
    │   ├── com.google.protobuf/protobuf-java "2.5.0"
    │   └── org.json/json "20090211"
    ├── org.clojure/google-closure-library "0.0-20140718-946a7d39"
    │   └── org.clojure/google-closure-library-third-party "0.0-20140718-946a7d39"
    └── org.mozilla/rhino "1.7R4"
cljsjs/boot-cljsjs "0.4.7" :scope "test"
cljsjs/hammer "2.0.4-4"
cljsjs/leaflet "0.7.3-0"
cljsjs/react-with-addons "0.13.1-0"
com.taoensso/carmine "2.9.2"
├── com.taoensso/nippy "2.8.0"
│   ├── net.jpountz.lz4/lz4 "1.3"
│   ├── org.iq80.snappy/snappy "0.3"
│   └── org.tukaani/xz "1.5"
├── commons-codec "1.10"
├── org.apache.commons/commons-pool2 "2.3"
└── org.clojure/data.json "0.2.6"
com.taoensso/encore "1.22.0"
com.taoensso/sente "1.4.1"
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"
danielsz/boot-autoprefixer "0.0.1"
danielsz/boot-environ "0.0.1"
danielsz/boot-runit "0.0.1"
├── com.taoensso/timbre "3.4.0"
│   └── io.aviso/pretty "0.1.16"
└── me.raynes/fs "1.4.6"
    └── org.apache.commons/commons-compress "1.8"
environ "1.0.0"
http-kit "2.1.16"
org.clojure/clojure "1.6.0"
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/core.match "0.3.0-alpha4"
org.danielsz/cljs-utils "0.1.0-20150405.111730-11"
org.danielsz/system "0.1.6"
├── com.stuartsierra/component "0.2.2"
│   └── com.stuartsierra/dependency "0.1.1"
├── ns-tracker "0.2.2"
│   └── org.clojure/java.classpath "0.2.2"
└── reloaded.repl "0.1.0"
    └── org.clojure/tools.namespace "0.2.4"
org.om/om "0.8.1" :exclusions [[com.facebook/react]]
pandeiro/boot-http "0.6.2" :scope "test"
ring/ring-defaults "0.1.4"
├── javax.servlet/servlet-api "2.5"
├── ring/ring-anti-forgery "1.0.0"
│   └── hiccup "1.0.5"
├── ring/ring-core "1.3.2"
│   ├── clj-time "0.6.0"
│   │   └── joda-time "2.2"
│   ├── commons-fileupload "1.3"
│   ├── crypto-equality "1.0.0"
│   └── crypto-random "1.2.0"
├── ring/ring-headers "0.1.2"
└── ring/ring-ssl "0.2.1"
secretary "1.2.3" :exclusions [[org.clojure/clojurescript]]
└── com.cemerick/clojurescript.test "0.2.3-20140317.141743-3"
sritchie commented 9 years ago

Do you have the same encore version as sente requires?

— Sent from Mailbox

On Sun, Apr 12, 2015 at 1:11 PM, Daniel Szmulewicz notifications@github.com wrote:

I hit the same error message as the OP:

clojure.lang.ExceptionInfo: No such var: enc/chan?
    data: {:file "taoensso/sente.clj", :line 180}

org.clojure/tools.analyzer.jvm is at 0.1.0-beta12 though. Here are my dependencies:

adzerk/boot-cljs "0.0-2814-4" :scope "test"
adzerk/boot-reload "0.2.6" :scope "test"
clj-http "1.1.0"
├── cheshire "5.4.0" :exclusions [[org.clojure/clojure]]
│   ├── com.fasterxml.jackson.core/jackson-core "2.4.4"
│   ├── com.fasterxml.jackson.dataformat/jackson-dataformat-cbor "2.4.4"
│   ├── com.fasterxml.jackson.dataformat/jackson-dataformat-smile "2.4.4"
│   └── tigris "0.1.1"
├── com.cognitect/transit-clj "0.8.269" :exclusions [[org.clojure/clojure]]
│   └── com.cognitect/transit-java "0.8.276"
│       ├── com.fasterxml.jackson.datatype/jackson-datatype-json-org "2.3.2"
│       │   └── com.fasterxml.jackson.core/jackson-databind "2.3.2"
│       │       └── com.fasterxml.jackson.core/jackson-annotations "2.3.0"
│       ├── org.apache.directory.studio/org.apache.commons.codec "1.8"
│       └── org.msgpack/msgpack "0.6.10"
│           ├── com.googlecode.json-simple/json-simple "1.1.1" :exclusions [[junit]]
│           └── org.javassist/javassist "3.18.1-GA"
├── commons-io "2.4" :exclusions [[org.clojure/clojure]]
├── crouton "0.1.2" :exclusions [[org.clojure/clojure]]
│   └── org.jsoup/jsoup "1.7.1"
├── org.apache.httpcomponents/httpclient "4.4" :exclusions [[org.clojure/clojure]]
│   └── commons-logging "1.2"
├── org.apache.httpcomponents/httpcore "4.4.1" :exclusions [[org.clojure/clojure]]
├── org.apache.httpcomponents/httpmime "4.4" :exclusions [[org.clojure/clojure]]
├── org.clojure/tools.reader "0.8.16" :exclusions [[org.clojure/clojure]]
├── potemkin "0.3.12" :exclusions [[org.clojure/clojure]]
│   ├── clj-tuple "0.1.7"
│   └── riddley "0.1.7"
└── slingshot "0.12.2" :exclusions [[org.clojure/clojure]]
cljs-ajax "0.3.11"
├── com.cognitect/transit-cljs "0.8.205"
│   └── com.cognitect/transit-js "0.8.755"
├── net.colourcoding/poppea "0.2.0"
│   └── spyscope "0.1.3"
└── org.clojure/clojurescript "0.0-2850"
    ├── com.google.javascript/closure-compiler "v20140625"
    │   ├── args4j "2.0.26"
    │   ├── com.google.code.findbugs/jsr305 "1.3.9"
    │   ├── com.google.guava/guava "17.0"
    │   ├── com.google.javascript/closure-compiler-externs "v20140625"
    │   ├── com.google.protobuf/protobuf-java "2.5.0"
    │   └── org.json/json "20090211"
    ├── org.clojure/google-closure-library "0.0-20140718-946a7d39"
    │   └── org.clojure/google-closure-library-third-party "0.0-20140718-946a7d39"
    └── org.mozilla/rhino "1.7R4"
cljsjs/boot-cljsjs "0.4.7" :scope "test"
cljsjs/hammer "2.0.4-4"
cljsjs/leaflet "0.7.3-0"
cljsjs/react-with-addons "0.13.1-0"
com.taoensso/carmine "2.9.2"
├── com.taoensso/nippy "2.8.0"
│   ├── net.jpountz.lz4/lz4 "1.3"
│   ├── org.iq80.snappy/snappy "0.3"
│   └── org.tukaani/xz "1.5"
├── commons-codec "1.10"
├── org.apache.commons/commons-pool2 "2.3"
└── org.clojure/data.json "0.2.6"
com.taoensso/encore "1.23.1"
com.taoensso/sente "1.4.1"
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"
danielsz/boot-autoprefixer "0.0.1"
danielsz/boot-environ "0.0.1"
danielsz/boot-runit "0.0.1"
├── com.taoensso/timbre "3.4.0"
│   └── io.aviso/pretty "0.1.16"
└── me.raynes/fs "1.4.6"
    └── org.apache.commons/commons-compress "1.8"
environ "1.0.0"
http-kit "2.1.16"
org.clojure/clojure "1.6.0"
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/core.match "0.3.0-alpha4"
org.danielsz/cljs-utils "0.1.0-20150405.111730-11"
org.danielsz/system "0.1.6"
├── com.stuartsierra/component "0.2.2"
│   └── com.stuartsierra/dependency "0.1.1"
├── ns-tracker "0.2.2"
│   └── org.clojure/java.classpath "0.2.2"
└── reloaded.repl "0.1.0"
    └── org.clojure/tools.namespace "0.2.4"
org.om/om "0.8.1" :exclusions [[com.facebook/react]]
pandeiro/boot-http "0.6.2" :scope "test"
ring/ring-defaults "0.1.4"
├── javax.servlet/servlet-api "2.5"
├── ring/ring-anti-forgery "1.0.0"
│   └── hiccup "1.0.5"
├── ring/ring-core "1.3.2"
│   ├── clj-time "0.6.0"
│   │   └── joda-time "2.2"
│   ├── commons-fileupload "1.3"
│   ├── crypto-equality "1.0.0"
│   └── crypto-random "1.2.0"
├── ring/ring-headers "0.1.2"
└── ring/ring-ssl "0.2.1"
secretary "1.2.3" :exclusions [[org.clojure/clojurescript]]
└── com.cemerick/clojurescript.test "0.2.3-20140317.141743-3"

Reply to this email directly or view it on GitHub: https://github.com/ptaoussanis/sente/issues/108#issuecomment-92101489

danielsz commented 9 years ago

I tried with both [com.taoensso/encore "1.22.0"] (the version sente requires), and [com.taoensso/encore "1.23.1"] (the latest version). No dice.

ptaoussanis commented 9 years ago

Hi Daniel, things to check:

In most cases, the ref example will run normally - and investigation turns up an issue with some tool or other dependency. ClojureScript's been moving very quickly lately, downside being that a fair bit of stuff's been breaking (particularly tooling).

If the ref example's working but your project isn't, I'd start trying to pinpoint a cause by dropping back to known-stable combinations of ClojureScript, core.async, tools.reader (& co), and any other tools like Austin, etc.

While debugging, remember to run lein clean between any significant changes.

Let me know if you're still struggling to pinpoint a cause and I can try take a closer look later this week.

Good luck, cheers! :-)

danielsz commented 9 years ago

Hi Peter,

The main thing is that we're in uncharted territory here as it's a boot project and lein clean doesn't apply. But I'll bootify the reference example instead and see where that leads us.

Thank you for the tips.

danielsz commented 9 years ago

I haven't gotten around to bootifying the reference example just yet, but I wanted to post here the output of a really cool command that ships with boot, namely a graph of dependency conflicts. This should make it much easier to spot problems such as the one at hand. Here follows the output for the project in which I'm trying to use sente.

[!] cheshire
    ✔ 5.4.0
      clj-http
    ✘ 5.3.1
      cljsjs/boot-cljsjs
[✔] clj-http
    ✔ 1.1.0
      clj-http
    ✘ 1.0.1
      cljsjs/boot-cljsjs
[!] clj-time
    ✔ 0.6.0
      compojure
      ring/ring-defaults
    ✘ 0.5.0
      cljs-ajax
[!] clj-tuple
    ✔ 0.1.7
      clj-http
    ✘ 0.1.5
      cljsjs/boot-cljsjs
[!] commons-codec
    ✔ 1.10
      clj-http
      com.taoensso/carmine
    ✘ 1.9
      cljsjs/boot-cljsjs
    ✘ 1.6
      compojure
      ring/ring-defaults
[!] commons-logging
    ✔ 1.2
      clj-http
    ✘ 1.1.3
      cljsjs/boot-cljsjs
[!] potemkin
    ✔ 0.3.12
      clj-http
    ✘ 0.3.8
      cljsjs/boot-cljsjs
[!] slingshot
    ✔ 0.12.2
      clj-http
    ✘ 0.10.3
      cljsjs/boot-cljsjs
[!] com.cognitect/transit-clj
    ✔ 0.8.269
      clj-http
    ✘ 0.8.259
      cljsjs/boot-cljsjs
[!] com.cognitect/transit-java
    ✔ 0.8.276
      clj-http
    ✘ 0.8.269
      cljsjs/boot-cljsjs
[!] com.fasterxml.jackson.core/jackson-core
    ✔ 2.4.4
      clj-http
    ✘ 2.3.1
      cljsjs/boot-cljsjs
[!] com.fasterxml.jackson.dataformat/jackson-dataformat-smile
    ✔ 2.4.4
      clj-http
    ✘ 2.3.1
      cljsjs/boot-cljsjs
[✔] com.taoensso/encore
    ✘ 1.23.1
      com.taoensso/carmine
    ✔ 1.22.0
      com.taoensso/encore
      com.taoensso/sente
    ✘ 1.21.0
      danielsz/boot-runit
[!] org.apache.httpcomponents/httpclient
    ✔ 4.4
      clj-http
    ✘ 4.3.5
      cljsjs/boot-cljsjs
[!] org.apache.httpcomponents/httpcore
    ✔ 4.4.1
      clj-http
    ✘ 4.3.3
      cljsjs/boot-cljsjs
[!] org.apache.httpcomponents/httpmime
    ✔ 4.4
      clj-http
    ✘ 4.3.5
      cljsjs/boot-cljsjs
[✔] org.clojure/clojure
    ✔ 1.6.0
      cljs-ajax
      secretary
      org.clojure/clojure
      org.danielsz/cljs-utils
      org.danielsz/system
      org.om/om
    ✘ 1.5.1
      compojure
      com.taoensso/sente
      org.clojure/core.match
    ✘ 1.4.0
      http-kit
      com.taoensso/carmine
      com.taoensso/encore
      danielsz/boot-runit
      org.clojure/core.async
      org.clojure/core.async
    ✘ 1.3.0
      ring/ring-defaults
    ✘ 1.2.1
      environ
[✔] org.clojure/core.async
    ✔ 0.1.346.0-17112a-alpha
      com.taoensso/sente
      org.clojure/core.async
      org.clojure/core.async
    ✘ 0.1.303.0-886421-alpha
      cljs-ajax
[!] org.clojure/data.json
    ✔ 0.2.6
      com.taoensso/carmine
    ✘ 0.2.3
      cljs-ajax
[!] org.clojure/tools.analyzer
    ✘ 0.6.4
      org.clojure/core.match
    ✔ 0.1.0-beta12
      cljs-ajax
      com.taoensso/sente
      org.clojure/core.async
      org.clojure/core.async
[!] org.clojure/tools.analyzer.jvm
    ✘ 0.6.5
      org.clojure/core.match
    ✔ 0.1.0-beta12
      cljs-ajax
      com.taoensso/sente
      org.clojure/core.async
      org.clojure/core.async
[!] org.clojure/tools.reader
    ✔ 0.8.16
      clj-http
      com.taoensso/carmine
      com.taoensso/encore
      com.taoensso/sente
    ✘ 0.8.13
      danielsz/boot-runit
    ✘ 0.8.12
      org.clojure/core.match
    ✘ 0.8.10
      cljs-ajax
      cljsjs/boot-cljsjs
    ✘ 0.8.1
      compojure
      ring/ring-defaults
[!] org.ow2.asm/asm-all
    ✘ 4.2
      org.clojure/core.match
    ✔ 4.1
      cljs-ajax
      com.taoensso/sente
      org.clojure/core.async
      org.clojure/core.async
ptaoussanis commented 9 years ago

Hi Daniel, not sure what boot is- you talking about this? Haven't heard of it, but definitely sounds like it'd be a good place to start looking. Cheers :-)

danielsz commented 9 years ago

That's the one. Absolutely. It's the middleware pattern applied to build tooling. Check it out. You might like it. :-)

I'll post the results of my investigations asap.

Thanks :+1: