pub struct SstableBuilder<W: SstableWriter, F: FilterBuilder> {Show 17 fields
options: SstableBuilderOptions,
writer: W,
block_builder: BlockBuilder,
compaction_catalog_agent_ref: CompactionCatalogAgentRef,
block_metas: Vec<BlockMeta>,
table_ids: BTreeSet<u32>,
last_full_key: Vec<u8>,
raw_key: BytesMut,
raw_value: BytesMut,
last_table_id: Option<u32>,
sstable_id: u64,
table_stats: TableStatsMap,
last_table_stats: TableStats,
filter_builder: F,
epoch_set: BTreeSet<u64>,
memory_limiter: Option<Arc<MemoryLimiter>>,
block_size_vec: Vec<usize>,
}
Fields§
§options: SstableBuilderOptions
Options.
writer: W
Data writer.
block_builder: BlockBuilder
Current block builder.
compaction_catalog_agent_ref: CompactionCatalogAgentRef
§block_metas: Vec<BlockMeta>
Block metadata vec.
table_ids: BTreeSet<u32>
table_id
of added keys.
last_full_key: Vec<u8>
§raw_key: BytesMut
Buffer for encoded key and value to avoid allocation.
raw_value: BytesMut
§last_table_id: Option<u32>
§sstable_id: u64
§table_stats: TableStatsMap
Per table stats.
last_table_stats: TableStats
last_table_stats
accumulates stats for last_table_id
and finalizes it in table_stats
by finalize_last_table_stats
filter_builder: F
§epoch_set: BTreeSet<u64>
§memory_limiter: Option<Arc<MemoryLimiter>>
§block_size_vec: Vec<usize>
Implementations§
source§impl<W: SstableWriter> SstableBuilder<W, Xor16FilterBuilder>
impl<W: SstableWriter> SstableBuilder<W, Xor16FilterBuilder>
pub fn for_test( sstable_id: u64, writer: W, options: SstableBuilderOptions, table_id_to_vnode: HashMap<StateTableId, usize>, ) -> Self
source§impl<W: SstableWriter, F: FilterBuilder> SstableBuilder<W, F>
impl<W: SstableWriter, F: FilterBuilder> SstableBuilder<W, F>
pub fn new( sstable_id: u64, writer: W, filter_builder: F, options: SstableBuilderOptions, compaction_catalog_agent_ref: CompactionCatalogAgentRef, memory_limiter: Option<Arc<MemoryLimiter>>, ) -> Self
sourcepub async fn add_for_test(
&mut self,
full_key: FullKey<&[u8]>,
value: HummockValue<&[u8]>,
) -> HummockResult<()>
pub async fn add_for_test( &mut self, full_key: FullKey<&[u8]>, value: HummockValue<&[u8]>, ) -> HummockResult<()>
Add kv pair to sstable.
pub fn current_block_size(&self) -> usize
sourcepub async fn add_raw_block(
&mut self,
buf: Bytes,
filter_data: Vec<u8>,
smallest_key: FullKey<Vec<u8>>,
largest_key: Vec<u8>,
meta: BlockMeta,
) -> HummockResult<bool>
pub async fn add_raw_block( &mut self, buf: Bytes, filter_data: Vec<u8>, smallest_key: FullKey<Vec<u8>>, largest_key: Vec<u8>, meta: BlockMeta, ) -> HummockResult<bool>
Add raw data of block to sstable. return false means fallback
sourcepub async fn add(
&mut self,
full_key: FullKey<&[u8]>,
value: HummockValue<&[u8]>,
) -> HummockResult<()>
pub async fn add( &mut self, full_key: FullKey<&[u8]>, value: HummockValue<&[u8]>, ) -> HummockResult<()>
Add kv pair to sstable.
sourceasync fn add_impl(
&mut self,
full_key: FullKey<&[u8]>,
value: HummockValue<&[u8]>,
could_switch_block: bool,
) -> HummockResult<()>
async fn add_impl( &mut self, full_key: FullKey<&[u8]>, value: HummockValue<&[u8]>, could_switch_block: bool, ) -> HummockResult<()>
Add kv pair to sstable.
sourcepub async fn finish(self) -> HummockResult<SstableBuilderOutput<W::Output>>
pub async fn finish(self) -> HummockResult<SstableBuilderOutput<W::Output>>
pub fn approximate_len(&self) -> usize
pub async fn build_block(&mut self) -> HummockResult<()>
pub fn is_empty(&self) -> bool
sourcepub fn reach_capacity(&self) -> bool
pub fn reach_capacity(&self) -> bool
Returns true if we roughly reached capacity
fn finalize_last_table_stats(&mut self)
Auto Trait Implementations§
impl<W, F> Freeze for SstableBuilder<W, F>
impl<W, F> !RefUnwindSafe for SstableBuilder<W, F>
impl<W, F> Send for SstableBuilder<W, F>
impl<W, F> Sync for SstableBuilder<W, F>
impl<W, F> Unpin for SstableBuilder<W, F>
impl<W, F> !UnwindSafe for SstableBuilder<W, F>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
type Err = Infallible
fn into_result(self) -> Result<T, <T as IntoResult<T>>::Err>
Creates a shared type from an unshared type.
source§impl<M> MetricVecRelabelExt for M
impl<M> MetricVecRelabelExt for M
source§fn relabel(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
Equivalent to
RelabeledMetricVec::with_metric_level
.source§fn relabel_n(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
relabel_num: usize,
) -> RelabeledMetricVec<M>
fn relabel_n( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, relabel_num: usize, ) -> RelabeledMetricVec<M>
Equivalent to
RelabeledMetricVec::with_metric_level_relabel_n
.source§fn relabel_debug_1(
self,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel_debug_1( self, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
Equivalent to
RelabeledMetricVec::with_metric_level_relabel_n
with metric_level
set to
MetricLevel::Debug
and relabel_num
set to 1.