by usrme on 5/20/25, 7:58 PM with 99 comments
by maxmcd on 5/20/25, 8:12 PM
Really nice to see this, I wrote this comment almost 2 years ago when I was a little miffed about trying to use litestream and litefs: https://news.ycombinator.com/item?id=37614193
I think this solves most of the issues? You can now freely run litestream on your DB and not worry about issues with multiple writers? I wonder how the handoff is handled.
The read replica FUSE layer sounds like a real nice thing to have.
edit: Ah, it works like this: https://github.com/benbjohnson/litestream/pull/617
> When another Litestream process starts up and sees an existing lease, it will continually retry the lease acquisition every second until it succeeds. This low retry interval allows for rolling restarts to come online quickly.
Sounds workable!
by simonw on 5/20/25, 9:01 PM
by thewisenerd on 5/20/25, 10:37 PM
we're using it on production for a write-heavy interal use-case (~12GB compressed) for more than a year now; and it's costing us a couple hundred pennies per month (azure).
excited to try the new changes when they land.
by bradgessler on 5/20/25, 10:34 PM
1. A built-in UI and CLI that manages SQLite from a volume. Getting the initial database on a Fly Machine requires more work than it should.
2. `fly console` doesn't work with SQLite because it spins up a separate machine, which isn't connected to the same volume where the SQLite data resides. Instead you have to know to run `fly ssh console —pty`, which effectively SSH's into the machine with the database.
The problem in general with SQLite web apps is they tend to be small apps, so you need a lot of them to make a decent amount of money hosting them.
by jasonthorsness on 5/20/25, 8:52 PM
Am I understanding correctly that I will be able to restore a database to any point-in-time that is while the litestream process is running? Because auto-checkpointing could consume the WAL while it isn't running?
So for an extreme example if the process crashed for an hour between 2:00 and 3:00, I could restore to 1:55 or 3:05 but the information required to restore between 2:00 and 3:00 is lost?
by psanford on 5/20/25, 9:07 PM
I can't wait to try this out.
by ignoramous on 5/20/25, 9:37 PM
We have a sneaking suspicion that the robots that write LLM code are going to like SQLite too. We think what coding agents like Phoenix.new want is a way to try out code on live data, screw it up, and then rollback both the code and the state.
Prescient.Agents would of course work well if they can go back in time to checkpoints and branch from there, exploring solutions parallely as needed.
Anyone who has experience with building workflows (Amazon SWF, Temporal, and the like) knows how difficult it is to maintain determinism in face of retries & re-drives in multi-tier setups (especially, those involving databases).
Replit recently announced their Agent's integration with Neon's time travel feature [0] for exactly the purpose outlined in TFA. Unlike Fly.io though, Replit is built on GCP and other 3p providers like Neon and it is unclear if both GCP & Databricks won't go all Oracle on them.
by hobo_mark on 5/20/25, 10:37 PM
by danielblignaut on 5/30/25, 12:14 PM
by srameshc on 5/20/25, 8:21 PM
by rads on 5/21/25, 2:47 AM
by wg0 on 5/21/25, 4:40 PM
That was the show stopper. Now multi tenant with per tenant database whee (in theory) each user can roll back to certain point in time or at least completely download their database and take away for whatever they want to do with it is going to be possible.
by wim on 5/21/25, 5:57 PM
by JSR_FDED on 5/21/25, 4:30 AM
by Skinney on 5/21/25, 10:22 AM
Previously this would be problematic, as the new instance might miss changes made by the old server. Is this fixed by these new changes?
by malkia on 5/21/25, 12:18 AM
by neom on 5/20/25, 10:56 PM
by j0e1 on 5/20/25, 9:48 PM
by mythz on 5/21/25, 3:31 AM
Should make replicating Multi tenant per-user SQLite databases a lot more appealing.
by bambax on 5/21/25, 6:53 AM
There may be a typo here:
> The most straightforward way around this problem is to make sure only one instance of Litestream can replication to a given destination.
Can replicate? Or can do replications?
by wiradikusuma on 5/21/25, 6:23 AM
by rawkode on 5/20/25, 9:09 PM
by Nelkins on 5/21/25, 5:41 PM
by nodesocket on 5/20/25, 10:11 PM
by oliwary on 5/20/25, 10:37 PM
by fra on 5/20/25, 8:56 PM
by ChocolateGod on 5/21/25, 7:46 AM
Does this mean your SQLite database size is no longer restricted by your local disk capacity?
by dastbe on 5/21/25, 2:49 AM
will revamped litestream have a solution for ACKing only when transactions have durably committed to storage?
by caleblloyd on 5/20/25, 9:57 PM
by yowmamasita on 5/21/25, 12:05 AM
by m3sta on 5/21/25, 1:23 AM
by nico on 5/20/25, 9:17 PM
Recently, I deployed a little side project using a small postgres vm on fly.io After a couple of days, and only having about 500kb of data stored in that db, the postgres vm went into an unrecoverable fail loop, saying it ran out of memory, restarting, then immediately running out of memory again, so on and so forth
It took about 3-4hrs to recover the data jumping through a lot of hoops to be able to access the data, copy it to another volume and finally download it
I would've reached for support, but it seems like the only option available is just posting on their forum. I saw a couple of related posts, all with unsatisfactory answers unfortunately
To be fair, it was incredibly easy to get up and running with them. On the other hand, almost all the time I saved by that quick start, was wasted recovering the failing db, all the while my site was down
Ironically, I originally developed the project using sqlite, but then switched to postgres to deploy
by gavinray on 5/20/25, 8:19 PM
by mixmastamyk on 5/20/25, 9:37 PM