Probleem
De file store gebruikt atomische writes per bestand, maar payload en metadata vormen samen nog geen herstelbare transactie.
Corrupt metadata blokkeert de volledige store
saveStore.load() stopt en retourneert een fout zodra één metadata.json niet gelezen of gedecodeerd kan worden. Daardoor kan één beschadigde revision voorkomen dat alle overige geldige saves bij startup geladen worden.
Incomplete revision kan achterblijven
saveStore.create() maakt eerst de revision-directory en schrijft daarna de payload. Pas vervolgens wordt metadata.json gemarshalld en geschreven. Wanneer metadata-encoding of -write faalt, blijft de al geschreven payloaddirectory bestaan. De normale loader ziet die directory niet, omdat hij uitsluitend metadata.json scant.
Gewenst herstelmodel
- schrijf een nieuwe revision eerst in een stagingdirectory onder dezelfde filesystem/parent;
- schrijf payload en metadata volledig, sync bestanden en commit daarna met één directory-rename of een expliciete commitmarker;
- ruim stagingdirectories op bij iedere fout vóór commit;
- detecteer incomplete oude directories tijdens startup/rescan en verplaats ze naar quarantaine of verwijder ze wanneer veilig;
- behandel een beschadigde
metadata.json per revision: registreer/quarantaineer die revision en laad de rest van de store door;
- rapporteer degradatie duidelijk via health/status en logs;
- behoud het originele bestand voor handmatig herstel zolang de integriteit onbekend is.
Testdekking
- geïnjecteerde payload-, metadata-encode-, metadata-write- en renamefouten laten geen zichtbare half-commit achter;
- één corrupte revision verhindert niet dat andere revisions geladen worden;
- corrupte/incomplete revisions worden deterministisch gelogd en gequarantaineerd;
- rescan is idempotent;
- een crash vóór en na de commitgrens levert na restart respectievelijk nul of precies één geldige revision op.
Prioriteit
P1 vóór brede Android- en WAN-uitrol. Mobiele clients en meerdere gelijktijdige apparaten vergroten de kans dat stroomverlies, processtop of onderbroken opslag zichtbaar wordt.
Probleem
De file store gebruikt atomische writes per bestand, maar payload en metadata vormen samen nog geen herstelbare transactie.
Corrupt metadata blokkeert de volledige store
saveStore.load()stopt en retourneert een fout zodra éénmetadata.jsonniet gelezen of gedecodeerd kan worden. Daardoor kan één beschadigde revision voorkomen dat alle overige geldige saves bij startup geladen worden.Incomplete revision kan achterblijven
saveStore.create()maakt eerst de revision-directory en schrijft daarna de payload. Pas vervolgens wordtmetadata.jsongemarshalld en geschreven. Wanneer metadata-encoding of -write faalt, blijft de al geschreven payloaddirectory bestaan. De normale loader ziet die directory niet, omdat hij uitsluitendmetadata.jsonscant.Gewenst herstelmodel
metadata.jsonper revision: registreer/quarantaineer die revision en laad de rest van de store door;Testdekking
Prioriteit
P1 vóór brede Android- en WAN-uitrol. Mobiele clients en meerdere gelijktijdige apparaten vergroten de kans dat stroomverlies, processtop of onderbroken opslag zichtbaar wordt.