Fork me on GitHub
#datomic
<
2022-12-13
>
jdkealy02:12:08

If I restore my DB to a new table and use a new transactor address, will the transactor write its new location to storage ?

jdkealy02:12:30

does could not read transactor location from storage mean it can't resolve the address or literally that it can't find the location ?

jdkealy02:12:34

I just finished like a 50GB restore. I restarted datomic and restarted the peers and get :db.error/read-transactor-location-failed I'm wondering if that means the transactor never wrote its location or if it means it can't resolve. I'm looking at the dynamo table is it's like 50GB, but it's impossible to decipher if it wrote its location or not.

Joe Lane02:12:08

You need a transactor running for the peer to connect

jdkealy02:12:34

right! I do have one running

jdkealy02:12:14

I just pointed it to a fresh new dynamo table

jdkealy03:12:35

I have a successful datomic deploy in kubernetes, when I call netcat on the host I get

root@clj-854546648d-gnnl9:/usr/src/app# nc -zv datomic 4334
Connection to datomic (172.20.249.103) 4334 port [tcp/*] succeeded!
I have a failing deploy where it says could not read transactor location from storage and the same command reads
root@bfa-api-6d5f6f84bb-l2xlw:/usr/src/app# nc -zv datomic 4334
datomic.default.svc.cluster.local [172.20.174.216] 4334 (?) open
Could that be a clue as to what's going on ?

jaret16:12:21

The implication of this is that the transactor machine does not have the permissions to communicate to underlying storage. This could be AWS perms, network perms, or other storage level permissions. What's your underlying storage?

jdkealy17:12:59

but when i do this from the transactor machine, i get Connection to datomic (172.20.249.103) 4334 port [tcp/*] succeeded!

jdkealy17:12:33

It's difficult to tell where the problem exists with this message. I know the transactor can communicate with Dynamo because I see its heartbeart incrementing and the transactor location. I believe the peer can connect to Dynamo because I think I would have gotten an AWS error.

jdkealy05:12:38

are there any additional debugging steps that could help determine this @U1QJACBUM

jaret12:12:48

@U1DBQAAMB can you SSH or something onto the box with the transactor and reach DDB through the AWS API? Additionally, are there logs from transactor startup on that box for the transactor?

jdkealy18:12:38

I got to the bottom of the issue by REPL'ing onto the peer and calling d/list-databases. It could not reach storage. I feel like there could be a better error message like "access denied to dynamodb table" or something.

Quentin Le Guennec09:12:03

Hello, can I have multiple physical databases for a single transactor? Or do I have to deploy a new transactor for, eg, a qualification database? (which could be a bit expansive)

onetom11:12:05

what do u mean by physical database? also, are you talking about datomic on-prem or datomic cloud? u can run the d/create-database function multiple times against the same datomic client.

jaret16:12:40

Yeah to echo Tamás questions... we'd need to know what you mean by "physical database." But assuming you mean having multiple datomic databases on the same datomic system, i'd then need to know if you are using Datomic on-prem or Datomic cloud. In both instances you can have multiple databases on the same system, but there are caveats and depends on what your databases will be used for in on-prem. Essentially, on-prem allows you to have multiple databases, but we recommend having a single DB per system with potentially smaller operational DBs alongside. In On-prem the transactor has to hold the memory index for each DB and thus multiple DBs with high throughput is not a great fit for on-prem. Cloud however is more suited for a multi-tenant model. We describe all the implications of multiple databases in on-prem here: https://docs.datomic.com/on-prem/operation/capacity.html#multiple-databases