Hello there,
I had a dumb question regarding how errors from RocksDB write api are treated and whether they should be retried at all.
I looked at the code and see a sigabrt for write failures from RocksDB.
Write failures can be either due to background errors (compaction, flushing) or foreground errors (failure during memtable insert); I can't think of any other foreground failures in the write path. So presumably they are all catastrophic
Why is it correct behavior to sigabrt and not retry? I understand that in scenarios like disk full, and other background errors that retrying is futile, but what about memtable insert failures? Is it incorrect to assume RocksDB can throw transient write failures which are retry-able?
RocksDB commits write batches to WAL before inserting into the memtable, so no data is lost in case of sigabrt; but I'm trying to understand motive for this approach and whether retrying is a viable alternative.
Thanks! Any guidance would be useful.