This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-05-04
Channels
- # announcements (4)
- # aws (3)
- # babashka (58)
- # beginners (59)
- # biff (6)
- # cider (3)
- # clj-kondo (48)
- # clj-on-windows (1)
- # cljdoc (1)
- # clojure (136)
- # clojure-europe (19)
- # clojure-gamedev (7)
- # clojure-germany (2)
- # clojure-nl (7)
- # clojure-norway (1)
- # clojure-portugal (1)
- # clojure-uk (4)
- # clojurescript (41)
- # community-development (2)
- # core-async (5)
- # cursive (10)
- # data-oriented-programming (1)
- # data-science (1)
- # datahike (5)
- # datomic (60)
- # docker (2)
- # emacs (13)
- # figwheel-main (19)
- # fulcro (12)
- # graalvm (9)
- # holy-lambda (41)
- # honeysql (14)
- # introduce-yourself (3)
- # jobs (4)
- # lsp (11)
- # nrepl (1)
- # off-topic (9)
- # other-languages (2)
- # pathom (22)
- # portal (5)
- # re-frame (17)
- # remote-jobs (4)
- # reveal (14)
- # shadow-cljs (1)
- # tools-build (7)
- # tools-deps (47)
- # xtdb (8)
- # yada (2)
is there any documentation about Datomic excise segments? its a metric that we are seeing in Datadog, but i cannot find any documentation about what exactly they are
That's good to know! It would simplify my life SOOO much to have the transactor in my k8s
So i was able to start the transactor in a kubernetes pod. And in my cluster, my services has a service address of datomic
. I made an alias in my transactor pod datomic = localhost
But when i go to start the db from clojure it says
starting database connection
CREATE DB
Error communicating with HOST datomic on PORT 4334
this tells me that datomic was able to connect to dynamo, it wrote its location to storage datomic
the transactor is up and running.
My kubernetes service looks like
resource "kubernetes_service" "datomic" {
metadata {
name = "datomic"
}
spec {
selector = {
App = kubernetes_deployment.react.spec.0.template.0.metadata[0].
}
port {
port = 4334
target_port = 4334
}
type = "LoadBalancer"
}
}
{:alt-host nil, :peer-version 2, :password "<redacted>", :username "<redacted>", :port 4334, :host "datomic", :version "0.9.6045", :timestamp 1651695721103, :encrypt-channel true}
root@clj-55c7d877b7-c47cn:/usr/src/app# telnet datomic 4334
Trying 172.20.247.2...
telnet: Unable to connect to remote host: Connection refused
root@clj-55c7d877b7-c47cn:/usr/src/app# telnet datomic 80
Trying 172.20.247.2...
root@clj-55c7d877b7-c47cn:/usr/src/app# java -version
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
bash-4.3# java -version
openjdk version "1.8.0_92-internal"
OpenJDK Runtime Environment (build 1.8.0_92-internal-alpine-r1-b14)
OpenJDK 64-Bit Server VM (build 25.92-b14, mixed mode)
bash-4.3#
The version of datomic you're using was released in https://docs.datomic.com/on-prem/changes.html#0.9.6045, before JDK17 was ever released. The latest release, https://docs.datomic.com/on-prem/changes.html#1.0.6397 , added support for JDK17
root@datomic-ff99879fd-cs74w:/datomic# java -version
openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment 18.9 (build 11.0.15+10)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+10, mixed mode, sharing)
now the transactor fails with
Terminating process - Serve failed
ActiveMQNotConnectedException[errorType=NOT_CONNECTED message=AMQ119007: Cannot connect to server(s). Tried with all available servers.]
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:787)
at datomic.artemis_client$create_session_factory.invokeStatic(artemis_client.clj:114)
at datomic.artemis_client$create_session_factory.invoke(artemis_client.clj:104)
at datomic.update$create_master$fn__11961.invoke(update.clj:732)
at datomic.update$create_master.invokeStatic(update.clj:722)
@U0CJ19XAM do you think there could be an issue using a load balancer to reach port 4334 ?
good god... after some debugging, i realized i had been pointing my kubernetes service to the wrong kubernetes pod :man-facepalming:
so then i fired up the datomic console on 8080 and when i couldn't connect to that either i got suspiscious
and then i knew something was wrong when i couldn't connect to python -m simpeHTTPServer
stared at it for 30 mins and FML. I was pointing at a Deployment that didn't have anything running on any of those ports
I had something similar a few months ago where I lost a whole day (and some hair) because I forgot that core.async/onto-chan!! closes the channel by default and I didn't set close?
to false
.
I know you've been looking into this for a while now (not just today), I'm glad you got it sorted out.
yes thanks! I'll write do a writeup on it, since there's nothing on the web it seems. Since we've got like 5 environemnts, i'd hate to spin up 5 ec2 servers. What a relief!
Hey @jdkealy,
I am trying to run datomic pro in kubernetes. I ran into the same error as you did Error communicating with HOST datomic on PORT 4334
.
What I have so far is:
-running postgres in k8
-transactor1 service (exposing port 4334)
-transactor2 service (exposing port 4334)
transactors are running fine.
Do you have writeup of your setup? Or would you like to share it with us? 🙂 Many thanks in advance.