BE Storage Module — Review Guide

Tablet Locks

LockTypeRole
_meta_lockshared_mutexVersion maps and tablet metadata visibility
_rowset_update_lockmutexSerializes delete bitmap updates (publish / MoW)
_base_compaction_lockmutexSerializes base compaction
_cumulative_compaction_lockmutexSerializes cumulative compaction

Checkpoints

  • [ ] _rs_version_map and _stale_rs_version_map accessed under _meta_lock with correct shared/exclusive mode?
  • [ ] Tablet-meta mutations under exclusive _meta_lock?
  • [ ] Nested locking follows established preconditions? (update_delete_bitmap_without_lock() requires both _rowset_update_lock and _meta_lock)
  • [ ] TxnManager lock order: _txn_lock → _txn_map_lock?

Rowset and Version Lifecycle

  • [ ] add_rowset() / modify_rowsets() under exclusive _meta_lock?
  • [ ] Version continuity preserved, or intentional same-version replacement used correctly?
  • [ ] Same-version replacement: old rowset moved to unused-rowset tracking before new becomes authoritative?
  • [ ] Reader/rowset code respects split lifetime: shared_ptr ownership + reader acquire() / release()?
  • [ ] StorageEngine::_unused_rowsets deletable only when use_count() == 1?

Delete Bitmap (MoW)

  • [ ] Cloud mode: TEMP_VERSION_COMMON and sentinels replaced before bitmap use?
  • [ ] Bitmap calculation serialized under _rowset_update_lock?
  • [ ] Compaction bitmap uses latest compaction counters, not stale snapshots?

Segment Writing

  • [ ] MoW tables: SegmentWriterOptions::enable_unique_key_merge_on_write set to true on every path?