datahike

https://datahike.io/, Join the conversation at https://discord.com/invite/kEBzMvb, history for this channel is available at https://clojurians.zulipchat.com/#narrow/stream/180378-slack-archive/topic/datahike
Aaron Cummings 2020-07-12T00:32:54.480100Z

Relevance Podcast, Episode 19, Rich talks about codeq, which I think is what you're looking for.

timo 2020-07-12T11:21:39.480300Z

we can have a chat about it anytime. I will follow up with more CI for datahike-server next week. most of the stuff can be copied over from e.g. datahike-jdbc but you need to get a release token from clojars into circleci to make it work. LEIN_PASSWORD and LEIN_USERNAME it is I think.

timo 2020-07-12T11:24:16.480500Z

Hey @magra. do you have some code snippets on this zfs use case? was looking into this as well.

magra 2020-07-12T13:21:32.480700Z

Wow to the management tool! I at the moment I am just building an System for my first prototype customer. So only a handful of users in production. All my machines, including laptops, are FreeBSD. I just zfs snapshot and zfs send / recieve for backup. No life replication. I use datahike with pathom as a backend for a fulcro app. The sofistication of my zfs boils down to shell-command-history in tmux at the moment (arrow-up return). I will not need more than a cron entry in the foreseeable future.

magra 2020-07-12T13:34:18.480900Z

And I really like how FreeBSD-Jails integrate with zfs. I have encrypted datasets and Jails for a reverse proxy and the datahike+pathom backend. The datahike jail has access to an encrypted partition with the data. And totally unrelated to datahike I boot a laptop from an encrypted disk with a long passphrase. Then come boot environments. A boot environment is a zfs snapshot that includes the kernel, etc, and selectively the right parts of /var and so on. So if kernel or package updates go wrong I can just return to an old snapshot. Boot environments are just finegrained clever defaults so I do not accidentally rollback a postgres database when I want to rollback the kernel. I you want your kernel to go back to yesterday you do not want to roll back the emails you wrote since then or the log or a database.

magra 2020-07-12T13:37:27.481100Z

Or here https://markusgraf.net/2020-02-26-Acme.html I use a small shared zfs dataset to share TLS certificates between a the reverse proxy and acme jails for certificate renewal.

magra 2020-07-12T13:43:23.481300Z

The big idea is that a customer has one zfs dataset with his datahike-files, data directories and app config. This is encrypted and can be backed up or migrated to another machine. It is independent of the Jail that runs the backend with a jvm and the clojure code, which just keeps data like session info or the port or the reverse proxy. The customer dataset gets mounted into the backend-jail.

respatialized 2020-07-12T16:36:55.486300Z

I'm not sure if I'm asking this question in the right place, but I'm coming across a performance bug with jetty/ reitit when trying to replicate the datahike-server (https://github.com/replikativ/datahike-server) project. I ported it to tools.deps and the latest versions of the underlying packages and I'm now encountering a 20-second delay in starting the jetty server (I confirmed this doesn't happen when doing lein run with a fresh clone of the repo). I tried profiling it but I don't get any more descriptive information than start_thread in the flamegraph so I don't really know where the performance penalty is coming from. I figured I'd ask here in case anyone has seen this or a similar bug before and can point me in the right direction for further investigation and debugging.

kkuehne 2020-07-13T08:25:51.487Z

Thanks for the info. I haven't looked at performance, since the server is a work in progress right now. I'm working on the database representation on the client side in the admin-endpoints branch. Also we might add a sockets interface for functions like listen!.

respatialized 2020-07-12T16:44:26.486500Z

thanks!

whilo 2020-07-12T18:16:11.486800Z

Ok, good. Yes, the problem is the ClojureScript build and test pipeline has not yet been automated.