| 3 Dec 2025 |
raitobezarius | Drv → Meta is not injective | 18:18:13 |
raitobezarius | that's right | 18:18:16 |
raitobezarius | but like if people starts depending on them via xattrs, that sounds ugh | 18:18:35 |
raitobezarius | basically large scale CI, nej workloads | 18:18:41 |
raitobezarius | It doesn't deadlock though | 18:18:49 |
raitobezarius | It's just way too slow | 18:18:51 |
aloisw | Hm yes, that's where I have seen these messages. Not noticed any excessive slowness though, but I can see different bottlenecks showing up there depending on machine speed. | 18:20:07 |
aloisw | For example, one thread not being enough to saturate the disk, transaction commit being stuck in fsync, deadlock on shitty code. | 18:21:23 |
aloisw | Not sure how much better other databases are on most of these points, except the first obviously. | 18:22:50 |
aloisw | SQL> CONNECT 'meow.db';
Statement failed, SQLSTATE = 08001
I/O error during "lock" operation for file "/home/aloisw/meow.db"
-Database already opened with engine instance, incompatible with current
Am I doing something wrong or does it not support concurrency at all? | 19:07:59 |
K900 | You have to use WAL mode | 19:08:17 |
K900 | To get single writer multiple readers | 19:08:22 |
aloisw | This is firebird, not SQLite. | 19:09:05 |
aloisw | Looks like it only supports concurrency in server mode. I suppose that's not so great for the Lix use case? (I would guess embedded support is why it was brough up to begin with?) | 19:15:51 |
raitobezarius | ah if it doesn't support it in embedded mode, meh… | 19:29:40 |
raitobezarius | we never went so far yet alois | 19:29:51 |
raitobezarius | so thanks for checking | 19:29:53 |
aloisw | "Deadlock" is not quite the right word here I guess, what I mean is the problem where idle transactions will still block others. | 19:36:24 |
aloisw | To be clear this is 10 minute experimentation, maybe there are some weird non-default flags that make it work, but I somewhat doubt it. | 19:36:58 |
Qyriad | hm, I mean server mode is fine when we have the daemon running so long as we can do writes without it | 19:41:09 |
K900 | At that point we might as well run postgres lol | 19:41:45 |
Qyriad | postgres has a file mode? | 19:42:05 |
aloisw | No, but if you accept running a server then it doesn't matter from the complexity perspective whether that server is Firebird or Postgres. | 19:42:43 |
Qyriad | true, but we have to retain the "the system is offline", local store case | 19:43:47 |
Qyriad | gods help you if your fucking postgres server binary becomes corrupt and you can't just nix build it back because it can't connect to the postgres daemon, fear.jpeg | 19:44:43 |
aloisw | What does "the system is offline" mean exactly here? You can run the postgres server as a subprocess (in fact, you'd probably actually want that so that you don't get confusion between the stores). | 19:45:41 |
aloisw | You can replace "postgres server binary" by "sqlite library" here. | 19:46:08 |
522 it/its ⛯ΘΔ | though with lix you can make a statically linked build that, afaik, you can just rsync and use that to recover if the nix store is fucked
... statically linked embedded postgres server binary | 19:54:25 |
aloisw | why not, we have that for the shell already | 19:55:14 |
aloisw | Ah wait can't have a statically linked postgres, I remember. | 19:58:30 |