Skip to main content

Module compaction

Module compaction 

Source
Expand description

Compaction Isolation

This module provides per-shard compaction queues that allow background index rebuilding without blocking readers.

§Problem

Global compaction blocks all shards:

  • Lock contention during CSR rebuild
  • Readers stall waiting for compaction
  • Unpredictable latency spikes

§Solution

Per-shard compaction with version-based isolation:

  1. Each shard has independent compaction queue
  2. Build new CSR/AoSoA in background
  3. Atomic pointer swap when ready
  4. Old version kept until readers drain (epoch-based reclamation)

§Invariants

  • Readers never block on compaction
  • Writers queue updates for next compaction cycle
  • At most one compaction per shard at a time
  • Compaction preserves search correctness

Structs§

CompactionConfig
Compaction configuration.
CompactionQueue
Compaction queue manager for multiple shards.
CompactionResult
Result of a compaction operation.
CompactionStats
Compaction statistics.
CompactionTask
Compaction task for a shard.
CompactionWorker
Background compaction worker.
MockCompactionExecutor
Simple in-memory compaction executor for testing.
ReaderGuard
Guard that tracks reader lifetime.
ShardCompactionState
Per-shard compaction state.

Enums§

CompactionPriority
Compaction priority levels.

Traits§

CompactionExecutor
Trait for compaction executor.

Type Aliases§

ShardId
Shard identifier for compaction.
Version
Version number for compacted data.