Ask questions on the official Q&A site at https://ask.datomic.com!
ghadi 2021-02-03T01:28:34.095100Z

@stuartrexking I would make schema transactions part of your deployment process, not part of the app bootup

ghadi 2021-02-03T01:29:29.096500Z

Especially when there are several nodes waking up to do the same work concurrently

ghadi 2021-02-03T01:29:49.097100Z

You could certainly use conformity as a library or script

ghadi 2021-02-03T01:30:20.098Z

I just mean: do it in a separate moment from app bootup.

stuartrexking 2021-02-03T01:34:49.098900Z

@ghadi Is that necessary if planning for accretion and adhering to the schema growth principle? https://docs.datomic.com/cloud/best.html#plan-for-accretion

stuartrexking 2021-02-03T01:35:18.099400Z

I just don’t see the benefit of doing it out of band of an app startup.

stuartrexking 2021-02-03T01:36:32.100800Z

So what you are suggesting is, specific to ion app: 1. Push and deploy 2. Trigger a schema transaction (always or only when the schema has changed?)

stuartrexking 2021-02-03T01:37:16.101200Z

Really what I want to know is why “I just mean: do it in a separate moment from app bootup.”

ghadi 2021-02-03T01:41:27.102200Z

(The accretion principle still applies) If you have N nodes booting up, you have N racey processes trying to do the same work.

ghadi 2021-02-03T01:43:13.105100Z

What I’ve seen work well is: Run tests, get a green check Transact new schema to DB Then deploy The app can presume that its schema exists in the DB - or exit if it doesn’t

ghadi 2021-02-03T01:47:09.107200Z

The Ion sample uses an endpoint to trigger schema installation, but in a real app you’d likely have code that expects the schema to be there, along with the schema installation code, so it’s a catch 22

stuartrexking 2021-02-03T02:01:13.107500Z

Thanks seems like a good approach. I’ll do that.

kschltz 2021-02-03T11:42:11.108900Z

Well, I transact the schema on bootup, as there are only 4-6 nodes of that particular service, no issues so far


• Wanna play with Datomic Pro Starter Edition. Does the “Running more than 3 processes (2 peers + transactor)” not allowed still apply?