gazette / core

Build platforms that flexibly mix SQL, batch, and stream processing paradigms

Home Page:https://gazette.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

remove recoverylog FSM properties

jgraettinger opened this issue · comments

"Properties" were originally added to the log FSM when it was a concern that files like IDENTITY, written by RocksDB on DB initialization and never changed, would prevent normal RocksDB compaction action from shifting forward the offset "horizon" of recovery-log content that's still required.

These days it's totally vestigial, since un-needed portions of the recovery log are happily pruned from the middle of the log, and there's no downside to having a jumble of very old fragments, new fragments, and "islands" of still-used fragments in between.

It also causes some rare initialization failures, because the FSM requires that a property like IDENTITY is never written again once initialized, and it turns out there are certain conditions where RocksDB will actually write this file again.

We should remove support for recording new Properties updates, while keeping required support to not break Properties that already exist in FSM hints.