I think having my career be started in testing has broken my brain. Having seen so many different failure scenarios, it makes actual development difficult. Failure handling in particular is exceptionally difficult, especially when you're hitting low level filesystem errors.
If you can't write to the filesystem, almost everything you do in an embedded system will fail. So you can't undo a partial write. Your logging will probably fail too.
A relatively big database (a tier 2/3 database) that I was using handled this in a really bad manner: it'd just segfault. Depending on when this happened you could get data corruption and never be able to open the DB even in read-only mode.
It's one of the core principles of a database! And it didn't even do that correctly.
If you can't write to the filesystem, almost everything you do in an embedded system will fail. So you can't undo a partial write. Your logging will probably fail too.
A relatively big database (a tier 2/3 database) that I was using handled this in a really bad manner: it'd just segfault. Depending on when this happened you could get data corruption and never be able to open the DB even in read-only mode.
It's one of the core principles of a database! And it didn't even do that correctly.