Datomic Cloud 981-9188

This message covers changes in this release.

2022/11/29 981-9188

  • Performance: Datomic now uses caffeine instead of guava for the object cache.
  • Feature: io-stats for transactions and queries. See Io-stats | Datomic.
  • Fix: Attribute names that begin with an underscore can be used for forward lookups in entity and pull. Note that naming attributes with a leading underscore is strongly discouraged because it conflicts with the convention for reverse lookup.

I’m getting these dependency conflicts, when I run clojure -M:ion-dev "{:op :push :uname *** :creds-profile *** :region ap-southeast-1}":

 :dependency-conflicts
 {:deps
  #:com.datomic{client-api #:mvn{:version "1.0.58"},
                client #:mvn{:version "1.0.126"},
                client-impl-shared #:mvn{:version "1.0.98"},
                client-cloud #:mvn{:version "1.0.120"}},

I assumed, that the list of dependency coordinates available on the ion servers is stored in the com.datomic/ion-dev library, but that was not upgraded; it’s still 1.0.306 from 2022/04/06.

Our deps.edn looks like this:

{:paths
 ["src" "rsc"]

 :deps
 {org.clojure/clojure          {:mvn/version "1.11.1"}
  com.datomic/ion              {:mvn/version "1.0.62"}
  com.datomic/client-cloud     {:mvn/version "1.0.122"}
...
  ;; ========== Datomic Cloud dependency conflict resolutions ==========
  ;; See also: https://docs.datomic.com/cloud/changes.html
  com.google.errorprone/error_prone_annotations
  #:mvn{:version "2.7.1"}

  org.eclipse.jetty/jetty-http #:mvn{:version "9.4.44.v20210927"}
  org.eclipse.jetty/jetty-util #:mvn{:version "9.4.44.v20210927"}
  org.clojure/tools.namespace  #:mvn{:version "1.2.0"}

  com.fasterxml.jackson.core/jackson-core
  #:mvn{:version "2.12.3"}

  com.cognitect/http-client    #:mvn{:version "1.0.111"}
  com.google.guava/guava       #:mvn{:version "31.0.1-jre"}

  org.eclipse.jetty/jetty-client
  #:mvn{:version "9.4.44.v20210927"}

  org.eclipse.jetty/jetty-io   #:mvn{:version "9.4.44.v20210927"}
  ;; ========== End of Datomic Cloud conflict resolutions =========
  }

 :mvn/repos
 {"datomic-cloud"
  {:url "s3://datomic-releases-1fc2183a/maven/releases"}

  "cognitect-dev-tools"
  {:url  "https://dev-tools.cognitect.com/maven/releases/"
   :why? "com.datomic/dev-local"}}

...

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

   :jvm-opts
   ["-XX:-OmitStackTraceInFastThrow"
    "-Dorg.slf4j.simpleLogger.log.com.amazonaws=error"]}}}

Should we just ignore these warnings?
Could there be any problem with our configuration?
Do I misunderstand something?

Hey @onetom you can ignore the dependency conflict map. It’s not right.

To explain further:

When a user is not using the same version of cloud that was used to produce the version of ion-dev you are running, the ion-dev dependency conflict report is potentially incorrect.

ion-dev includes a file, cloud-deps.edn that is a list of all the deps included in cloud. When ion-dev’s :push is run, ion-dev uses this cloud-deps.edn to determine if you have conflicts in your ion with libraries that are on cloud.

Maintenance of this file currently requires our dev to build cloud locally, to get the updated dep list and then push another build. We are not currently doing that for every release and are investigating using another approach for dependency conflict checking.

1 Like