use super::load_status::OpenIndexLoadStatus;
use std::collections::BTreeMap;
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum OpenIndexPath {
Mmap,
Checkpoint,
Rebuild,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[non_exhaustive]
pub struct OpenIndexReport {
pub path: OpenIndexPath,
pub restored_entries: usize,
pub tail_entries: usize,
pub elapsed_us: u64,
#[serde(default)]
pub phase_plan_build_us: u64,
#[serde(default)]
pub phase_interner_us: u64,
#[serde(default)]
pub phase_restore_index_us: u64,
#[serde(default)]
pub phase_hidden_ranges_us: u64,
#[serde(default)]
pub mmap_load_status: OpenIndexLoadStatus,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mmap_invalid_reason: Option<String>,
#[serde(default)]
pub checkpoint_load_status: OpenIndexLoadStatus,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub checkpoint_invalid_reason: Option<String>,
pub unknown_reserved_system_kind_fallbacks: usize,
pub unknown_reserved_system_kind_histogram: BTreeMap<u16, usize>,
pub unknown_reserved_effect_kind_fallbacks: usize,
pub unknown_reserved_effect_kind_histogram: BTreeMap<u16, usize>,
pub cumulative_unknown_reserved_system_kind_fallbacks: usize,
pub cumulative_unknown_reserved_system_kind_histogram: BTreeMap<u16, usize>,
pub cumulative_unknown_reserved_effect_kind_fallbacks: usize,
pub cumulative_unknown_reserved_effect_kind_histogram: BTreeMap<u16, usize>,
}