Fork me on GitHub

quick question: does datomic on-prem HA require two separate license? paraphrasing from > Running HA requires the use of a paid Datomic Pro license key in both transactors.


No. A single license covers a system (two transactor machines for HA) + associated peers and that also includes needed staging/testing/dev environments.


thanks, @U1QJACBUM đź‘Ť


    (db/q '[:find ?c1
            :in $ %
            :where [?rc :concept/id "SgNH_hag_n9D"]
                   [?c1 :concept/type "skill"]
                   (edge ?rc "related" ?c2 _)
                   [(= ?c1 ?c2)]]
          (db/get-db 1)
  ;; "Elapsed time: 447.703084 msecs"

    (db/q '[:find ?c
            :in $ %
            :where [?rc :concept/id "SgNH_hag_n9D"]
                   [?c :concept/type "skill"]
                   (edge ?rc "related" ?c _)]
          (db/get-db 1)
  ;; "Elapsed time: 6532.150235 msecs"


I thought unification will make datomic query execution engine to do less work, not more…


but here I perform unification “manually” with (= ?c1 ?c2) and it performs 14 times faster then with unification…


is it some weird edge case that has something to do with the rule (not sure if it’s needed here, it’s somewhat big)?


My page seems a bit incoherent now. It shows my current license (good until may 2022), but the order history is extremely incomplete (only transaction shown is from 2015) and I don’t see any datomic downloads after 1.0.6165 and I get a 401 using maven access for newer versions of datomic-pro

Robert A. Randolph14:12:17

We're aware of the issue and working on it.


@favila I believe we resolved the issue with please let us know if you are still having issues or see any other oddities.


$ curl -iL HTTP/2 302 date: Tue, 14 Dec 2021 15:59:17 GMT content-type: text/html;charset=utf-8 content-length: 0 location: server: Jetty(9.4.41.v20210516) set-cookie: my-datomic=YzJ28XgVDb9owvW3n3PsaI%2FiJxYW%2Bwg%2FN2HuNa%2BU%2BFy4pAZr0fyE6Wv0FGl7ZQtb%2B2n%2BVW4XENjY3EFCLFutKXKc%2BU7YZjF%2BwNH%2B3iF5ak76cuhkVQLLNmF8HUlWLYa13HEmm%2BNVZLVtwr9QxzC4b5et77%2FRXr8C41BkSDWEulc%3D--6NcFiZInwMk14ntSYHAxPOR2tbeaCzGRmmmqc1mD4i4%3D;Path=/;HttpOnly x-frame-options: DENY x-xss-protection: 1; mode=block x-download-options: noopen strict-transport-security: max-age=31536000; includeSubdomains x-permitted-cross-domain-policies: none x-content-type-options: nosniff content-security-policy: object-src none apigw-requestid: KWLVViAaIAMES0Q= HTTP/1.1 400 Bad Request Server: awselb/2.0 Date: Tue, 14 Dec 2021 15:59:17 GMT Content-Type: text/html Content-Length: 220 Connection: close <html> <head><title>400 The plain HTTP request was sent to HTTPS port</title></head> <body> <center><h1>400 Bad Request</h1></center> <center>The plain HTTP request was sent to HTTPS port</center> </body> </html>


Note: location: 


Thanks @U0P7ZBZCK looks like we are missing a redirect to https. Will investigate.


its not possible to login over HTTP.


Site should be accessible from


Works for me now. Thanks


We're aware that we are still experiencing issues with Working to resolve the issue.

michele mendel17:12:52

Why does ?added in this query return true or false , and not :db/add or :db/retract ?

(d/q '{:find [?e ?a-name ?v ?added]
       :in [$]
       :where [[?e ?a ?v _ ?added]
               [?a :db/ident ?a-name]]}
     (d/history (d/db conn)))

Joe Lane17:12:41

Because the 5th position of a datom is a boolean, not the op used.

michele mendel17:12:45

Yes, but why isn't the op used?

Joe Lane17:12:40

Also @michelemendel, you probably want to do something like this.

(let [the-db (d/db conn)
      the-h-db (d/history the-db)
      a->a-name (into {} 
                      (d/q '[:find ?a ?a-name
                             :where [?a :db/ident ?a-name]]
  (map (fn [d] (update d 1 a->a-name)) (seq (d/datoms the-h-db :eavt))))

michele mendel18:12:14

I had to change it a little to make it work, but what was the intended collection to map?

michele mendel18:12:23

The map has no input collection

 (fn [d] (update d 1 a->a-name (d/datoms history-db {:index :eavt})))
 Shouldn't there be a collection here?

michele mendel18:12:34

Maybe you wanted to pick out the keys in a->a-name from the history.

(let [db (d/db conn)
      history-db (d/history db)
      a->a-name (->> (d/q '[:find ?a ?a-name
                            :where [?a :db/ident ?a-name]]
                     (into {}))]
  (->> a->a-name
       (map (fn [d] (update d 1 (seq (d/datoms history-db {:index :eavt})))))))
This doesn't work, though.

Joe Lane18:12:56

(let [the-db (d/db conn)
      the-h-db (d/history the-db)
      a->a-name (into {} 
                      (d/q '[:find ?a ?a-name
                             :where [?a :db/ident ?a-name]]
  (map (fn [d] (update d 1 a->a-name))
       (seq (d/datoms the-h-db :eavt))))

Joe Lane17:12:30

Otherwise you're going to load the entire history of the database into memory


We've started seeing 500s again from; opening a new thread


Previously HEAD requests were causing it.


On the surface, the fact that peek is appearing near the end of the stacktrace is consistent with the previous issue with HEAD requests


I'm seeing the same problem I reported earlier too $ curl -iL HTTP/2 302 date: Tue, 14 Dec 2021 18:27:56 GMT content-type: text/html;charset=utf-8 content-length: 0 location: Even though the initial request is via https, the redirect is via http using port 443

Robert A. Randolph18:12:23

We're looking into it, thank you for the reports!


FWIW, it just worked for me.


We think the issues have been resolved. Thanks for hanging with us and reporting issues. Let us know if anything else pops up.