Ashwani Raina created KUDU-3783:
-----------------------------------
Summary: Extend clean-superblock guarantee into LoadFromSuperBlock
Key: KUDU-3783
URL: https://issues.apache.org/jira/browse/KUDU-3783
Project: Kudu
Issue Type: Bug
Reporter: Ashwani Raina
Assignee: Ashwani Raina
KUDU-1060 guarantees a clean superblock when cleanup happens through
{{DeleteTabletData}}. It does not cover the crash-recovery path followed by
load-time path.
# A crash occurs after a superblock was written with orphaned-block entries
but before the cleanup {{Flush()}} completed
# On the next startup, {{LoadFromSuperBlock}} calls {{DeleteOrphanedBlocks,
}}so the blocks get deleted from disk and removed from the in-memory set but on
{{master}} today it never flushes {{{}{}}}a clean superblock afterward.
# For a tombstoned tablet, that could be fatal to the optimization: a
tombstoned tablet receives no further normal flushes, so the on-disk superblock
keeps the stale orphaned block IDs forever. Every subsequent restart re-parses
those block IDs and re-runs {{DeleteOrphanedBlocks}} (now mostly
{{{}NotFound{}}}, but still parsed and attempted), a recurring per-restart cost
proportional to:
{{{{No. of tombstoned tablets}}{{ x No. of orphaned blocks per tablet
}}}}This ticket tracks the changes to extend clean-superblock guarantee into
{{{}LoadFromSuperBlock.{}}}{{{}{}}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)