datomic 2026-11-06

Howdy all, I’m trying to move data between Datomic Pro 1.0.7745 instances. I’ve got one with data running great in a Linux container. I can backup and restore within that container with no problems. However, when I copy the backup directory out of the container and try to use it from the same datomic version running natively on Windows, it can’t seem to use it. Running ‘bin/datomic list-backups <uri>’ returns an empty list and attempting ‘bin/datomic restore-db <uri>’ gives me a stack trace about :no-roots. The same behavior occurs with the sample databases from the main datomic page. Any idea how to actually restore this data?

I am very surprised you can even run Datomic tools on windows? Are you using WSL or some other linux? Do you get an error when you attempt to run a transactor? Can you paste exactly what you are passing to list-backups along with your file path? My best guess is that you are not actually getting the target dir with the backups and need some windows escaping or file system sugar to make sure you are hitting the path.

Basically, try to convince yourself you are seeing the dir with that command because if it was an empty or bad dir it would return {} / no roots

Also if you run list-backups on yout linux container do you see a backup T?

No WSL, just Java 21 and the .cmd tools provided. And the transactor isn’t running yet because it can’t find the db yet. Maybe there will be more to report there later. My command on windows looks like ‘.\bin\datomic list-backups <file:///C/Users/%3Cname%3E/path/to/datomic-samples-backups/streets%E2%80%99|file:///C/Users/<name>/path/to/datomic-samples-backups/streets>' and returns ‘()’ From the Linux container, I get ‘(18043)’ .. that’s from my data, not the streets sample, but I get the same empty list from my data on windows well.

You should be able to start a transactor without a DB from the datomic distribution and with just dev properties and it should launch regardless of if there is a DB in a folder and a transactor is required for running restore on dev at least. Is this a missing : so file:///C:/Users/?

If you have a min I’d be happy to pair. I am very interested in making windows life easier for users

Sorry, the transactor is running, no errors. The peer server isn’t running.

❤️ 1

Wow thats great! I need to try running on windows again its been a long time since I’ve used it

I’ve also tried with and without the ‘:' after the drive letter, doesn’t seem to make a difference.

In your container can you get the file counts and sizes and then compare that to the windows location I assume using power shell? Something like:

;Container
 find /path/to/datomic-samples-backups/streets | wc -l

;and according to the internet in powershell:
(Get-ChildItem -Recurse -File C:\Users\<name>\path\to\datomic-samples-backups\streets).Count

As a test, I get the same empty list from list-backups with an invalid path, so I do think the URI is the issue

This is a sanity check that “copy” worked.

yeah it has to be the path

thats a good test

so I guess ignore my check the files and compare the sizes route

oh! maybe no file://?

what does C:\Users\<name>\path\to\datomic-samples-backups\streets get you in windows

I bet we just flat out don’t support it because we usually use that part of the URI to flex between s3 and file format of backup in list/backup/restore

but Windows is tripping up with file included

I am gonna get windows Datomic running and start experimenting

❤️ 1

Window path separators returns an URISyntaxException for the illegal character at index 2

I used java.io.File to verify the path exists and create a URI. Same empty list from list-backups, but I also learned that if I pass it a valid URI to a file I do get a :backup/not-a-directory error

Additionally, verify-backup does show 0 of 654 segments at time 18043 and conveniently lists all 654 uuids it can’t find 😅

I can find those segments in the /values directory, so they're there, it just can’t seem to find them for some reason. This also validates the URI shape at least.

I’ve also noticed the segments are in the directory corresponding to the last two uuid chars. That appears consistent between my backup and the sample, so I don’t think that’s a mistake, just compensating for the timestamp-based uuids.

@jaret I was able to get the restore working by specifying the time basis at the command line. Not sure why that was necessary. Now on to getting the peer server running, currently getting an ActiveMQ connection error.

Paste the exception here along with the args? Most active MQ are warnings to be ignored

Ok, I still had docker running, consuming the 4334 port. Everything is up now!

❤️ 1

Wow I am thrilled anyone is able to run on Windows without WSL! You really made my morning. Sorry I wasn't more help.

All good. Still seems like there’s an issue discovering the roots from Windows and I can’t look into that myself. But thanks for troubleshooting with me!

I am still setting up my windows machine and will capture stories for stuff we could fix now that it works

👍 1