REBL vs recursive data in Datomic


#1

I’m trying out REBL against our on-prem Datomic installation, but it seems to recursively keep pulling entities from Datomic.

An abbreviated part of our schema looks like this:

{:db/ident :user/guid
 :db/type :db.type/uuid
 :db/cardinality :db.cardinality/one
 :db/unique :db.unique/identity}

{:db/ident :user/leases
 :db/type :db.type/ref
 :db/cardinality :db.cardinality/many}

{:db/ident :lease/thing
 :db/type :db.type/ref
 :db/cardinality :db/cardinality/one}

{:db/ident :thing/owner
 :db/type :db.type/ref
 :db/cardinality :db.cardinality/one}

Then in REBL I pull [ * ] for a user entity, and try to start navigating down to thing. REBL then seems to be constantly hitting the peer server, and parts of the UI “wiggle” a lot (the columns in the metadata table, which is empty, keep changing size slightly). I’m not completely certain that REBL is constantly pulling more data from Datomic, but from the logger it looks like it is (lots of debug logs from org.eclipse.jetty).

I’m connecting to Datomic via datomic.client.api, via the peer server to our on-prem installation. Our deployed on-prem Datomic version is 0.9.5561.56.


#2

What version of client are you using?


#3

This is the deps.edn (minus some private things removed):

{:paths ["src" "resources"]
 :deps {org.clojure/clojure {:mvn/version "1.9.0"}
        com.datomic/ion {:mvn/version "0.9.26"}
        org.clojure/core.async {:mvn/version "0.4.490"}}
 :aliases {:dev {:extra-deps {com.datomic/client-cloud {:mvn/version "0.8.71"}
                              com.datomic/ion-dev {:mvn/version "0.9.176"}}
                 :extra-paths ["scripts"]}
           :rebl {:extra-deps {org.clojure/clojure {:mvn/version "1.10.0-RC3"}
                               com.cognitect/rebl {:mvn/verssion "0.9.109"}
                               com.datomic/client-cloud {:mvn/version "0.8.71"}
                               com.datomic/client-impl-pro {:mvn/version "0.8.11"}}}}
 :mvn/repos {"datomic-cloud" {:url "s3://datomic-releases-1fc2183a/maven/releases"}}}

I’m launching REBL from a REPL within IntelliJ/Cursive, with the rebl alias.


#4

You mention that you’re using REBL against your Datomic On-Prem system, however your deps include client-cloud.

You should not be including the client-impl-* in either case, but if you are indeed using it against Datomic On-Prem you should have com.datomic/client-pro in your dependencies, not client-cloud.

I’m unsure whether this will specifically resolve the issue you’re seeing - I’m still working on reproducing the behavior.

-Marshall


#5

I changed the datomic dependencies in :rebl to only refer to com.datomic/client-pro "0.8.28" (I had client-cloud in the deps since we’re using both on-prem and cloud systems, and I’m investigating REBL if it’s useful for debugging use for us, unifying the two systems).

I seem to still get the same behavior, and I also seem to get REBL to jump too far into the database — instead of jumping into thing from lease (selecting :lease/thing in the left hand pane, clicking >, if that’s the correct usage), I jump into an attribute of thing instead.

Thanks for the clarification on what artifact to include, though, I wasn’t sure if I needed client-impl-* dependencies or not, to include the client-pro parts.