Fork me on GitHub
#datomic
<
2022-03-29
>
Daniel Jomphe14:03:12

Now that Clojure 1.11 is out, our deployment script for Datomic Cloud Ions is broken. What broke it is that our CI-CD deployment script installed Clojure 1.11 instead of 1.10 to run its jobs. I'll simply find a way to pin it to 1.10, since anyways we can't use Clojure 1.11 for now in our Ion-based project. I wanted to let you know. Here's the interesting bits (in the thread)...

Daniel Jomphe14:03:45

clojure -M:only/bin -m <elided>
Downloading: org/clojure/clojure/1.11.0/clojure-1.11.0.pom from central
Downloading: org/clojure/core.specs.alpha/0.2.62/core.specs.alpha-0.2.62.pom from central
Downloading: org/clojure/spec.alpha/0.3.218/spec.alpha-0.3.218.pom from central
Downloading: org/clojure/spec.alpha/0.3.218/spec.alpha-0.3.218.jar from central
Downloading: org/clojure/clojure/1.11.0/clojure-1.11.0.jar from central
Downloading: org/clojure/core.specs.alpha/0.2.62/core.specs.alpha-0.2.62.jar from central
⚙ deployment script ready to be used.

🎯 OPERATING :push - - - - - - - - - -
clojure -M:ion-dev {:op :push}
⏳
✍️ REQUEST OUT - - - - - - - - - - - -
{:command-failed "{:op :push}",
 :causes
 ({:message
   "Attempting to call unbound fn: #'cognitect.s3-libs.file/abs",
   :class IllegalStateException})}
✍️ REQUEST ERR - - - - - - - - - - - -
"WARNING: abs already refers to: #'clojure.core/abs in namespace: cognitect.s3-libs.file, being replaced by: #'cognitect.s3-libs.file/abs"

Daniel Jomphe14:03:48

Not sure yet why this downloaded 1.11. In deps.edn, out dep on Clojure is:

org.clojure/clojure {:mvn/version "1.10.3"}

Daniel Jomphe14:03:17

Ok, that's because the aliases behind -M:only/bin and -M:ion-dev above are defined as such in our project's deps.edn. In effect, it removes the dependency on clojure 1.10.3, so when the Clojure CLI runs, it must decide to download the latest clojure because I "forgot" to specify the dependency on clojure...

:only/bin {:replace-paths ["bin"]
           :replace-deps {}}}

:ion-dev {:replace-deps {com.datomic/ion-dev {:mvn/version "1.0.298"}}
          :main-opts  ["-m" "datomic.ion.dev"]}

xceno13:03:11

I was about to upgrade to 1.11 tomorrow. Are you saying ions simply don't work with 1.11, or does this just affect your specific deployment?

Daniel Jomphe13:03:22

There's two considerations: 1. What clojure version you use to operate your ion deployments. 2. What clojure version you use in your ion clojure processes.

Daniel Jomphe13:03:54

My post was about 1. As for 2., even if your project's deps.edn would specify 1.11 as a dep for your ion clojure processes, your clojure code will get loaded in the Datomic Cloud Ion process already running with 1.10.3. During the deployment you'll get a warning that your choice of 1.11 was overridden by what's available, 1.10.3.

xceno13:03:49

Ahh I see, thanks for clarifying that!

1
Daniel Jomphe13:03:15

So you need to keep your ion app with 1.10.3 until Cognitect announces an upgrade is available with a new cloudformation to upgrade your Datomic Cloud cluster (making sure they mention they moved to 1.11).

jaret14:03:52

@U0514DPR7 Thanks for reporting this! We are working on a fix 🙂. Apologies for the frustration this might have caused.

Daniel Jomphe14:03:19

None at all, Jaret. Thanks for letting us know about the WIP for a fix. 🙂

jaret14:04:11

@U0514DPR7 We released a fix for this today (upgrade to this latest version of ion-dev): https://forum.datomic.com/t/ion-dev-1-0-304/2063.

🎉 1
Daniel Jomphe14:04:41

Thanks for the notice Jaret!