This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-10-19
Channels
- # adventofcode (1)
- # announcements (3)
- # babashka (60)
- # beginners (60)
- # calva (5)
- # clj-commons (17)
- # clj-kondo (33)
- # clj-on-windows (1)
- # clojure (40)
- # clojure-austin (3)
- # clojure-europe (19)
- # clojure-gamedev (25)
- # clojure-nl (1)
- # clojure-norway (6)
- # clojure-sweden (4)
- # clojure-uk (2)
- # clojurescript (27)
- # conjure (1)
- # core-async (1)
- # core-typed (7)
- # cursive (5)
- # datomic (35)
- # events (1)
- # fulcro (35)
- # integrant (7)
- # introduce-yourself (2)
- # kaocha (5)
- # leiningen (2)
- # lsp (26)
- # malli (13)
- # nbb (99)
- # off-topic (15)
- # pathom (12)
- # pedestal (5)
- # polylith (8)
- # portal (4)
- # rdf (19)
- # reagent (8)
- # reitit (5)
- # releases (2)
- # remote-jobs (2)
- # rewrite-clj (1)
- # shadow-cljs (94)
- # testing (2)
- # timbre (2)
- # tools-deps (16)
hi, was wondering are there any cases/caveats where a relatively fast query would take excessively long time? In other words, are there any deadlock-ish/blocking behavior when doing d/q with on-prem in-process peer (using d/history too)?
Is this on-prem or cloud? I (and others) have been hit by network issues, i.e. silently broken TCP connections. The default behaviour of e.g. the postgresql driver is to wait forever for a packet. For postgresql you may set the socketTimeout property on the connection string. That might help if that is what is hitting you. The problem is well described here: https://github.com/brettwooldridge/HikariCP/wiki/Rapid-Recovery (Datomic on prem uses a different connection pool though, but the socketTimeout setting is the same.)
oh I see you are using on-prem
I wrote about this issue here: https://ask.datomic.com/index.php/631/blocking-event-cluster-without-timeout-failover-semantics
I also wonder if you are running in the "cloud"? My company services is running in Azure, and we have had plenty of these silently broken TCP connections. All of our code needs to have proper network timeouts, otherwise -well- requests will just block forever it seems. Waiting forever is the default of quite a few libraries (including datomic). We did not have this problem on prem (though that doesn't mean it cannot happen there of course), or at least it hardly ever happened.
Yeah, I've seen that ask.datomic thread while looking around, but not sure how much that applies, considering dynamodb backend is used in my case, not even sure if it supports some timeout parameter.
also unrelated question, is there any documentation about what the metrics from Datomic Metrics Reporter
(`datomic.process-monitor`) mean exactly and how to interpret them? Things like PodGetMsec
or AcceptIndexMsec
? I could only find about transactor metrics using registerd callback
For restoring backups to a SQL storage, how do you format the jdbc-url, given that the connection already has a ?
in the string you send in as a db-uri
Also, is there any limitations in which authentication you need for datomic towards postgres? The installation I am using uses scram-sha-256 as the authn method. Is there need to downgrade to md5?
OK. Figured it out. You need an md5 based authentication on the postgres instance, and you escape the ?
and &
characters in your JDBC url with \
Client API – is it true that the client API is the same across all Datomic product lines? (Onprem, Cloud, Ion, Dev local) the docs for onprem and cloud both link to the same place https://docs.datomic.com/client-api/index.html

There are minor differences, e.g. you can’t create/delete dbs (or perform administer-system?) with peer-server (= onprem)
oh, that is cool
@U09K620SG haven't try it, but I don't think devlocal supports custom transaction functions since that requires ions
dev-local is a single process---seems like the transaction function would only need to be available to the classloader
Ok, is not clear from the docs how you would make them available to devlocal/transactions since the examples rely on the ions api https://docs.datomic.com/cloud/transactions/transaction-processing.html#cancel
In on-prem, nothing is done to make them available--just make sure the var is in the classpath.
ions are different, because you have to deploy the txfn to the transacting process somehow.
This question can be answered very easily in a repl with dev-local loaded. I don’t have a dev-local project handy though.
for using stuff like cancel
https://docs.datomic.com/cloud/transactions/transaction-processing.html#cancel