This is an automated email from the ASF dual-hosted git repository. xikai pushed a commit to branch memtable-poc in repository https://gitbox.apache.org/repos/asf/incubator-horaedb.git
commit 8e3e257944d5315ad94da16dd77d6f61c244f0fb Author: xikai.wxk <[email protected]> AuthorDate: Thu Dec 21 20:15:01 2023 +0800 feat: throw error when space memory is exhausted --- analytic_engine/src/instance/write.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/analytic_engine/src/instance/write.rs b/analytic_engine/src/instance/write.rs index e49ccaac..00a7eec0 100644 --- a/analytic_engine/src/instance/write.rs +++ b/analytic_engine/src/instance/write.rs @@ -28,7 +28,7 @@ use common_types::{ MIN_SEQUENCE_NUMBER, }; use itertools::Itertools; -use logger::{debug, error, info, trace, warn}; +use logger::{debug, error, trace, warn}; use macros::define_result; use smallvec::SmallVec; use snafu::{ensure, Backtrace, ResultExt, Snafu}; @@ -46,7 +46,7 @@ use crate::{ }, memtable::{key::KeySequence, PutContext}, payload::WritePayload, - space::SpaceRef, + space::{SpaceId, SpaceRef}, table::{data::TableDataRef, version::MemTableForWrite}, WalEncodeConfig, WalEncodeFormat, }; @@ -105,6 +105,12 @@ pub enum Error { source: crate::instance::flush_compaction::Error, }, + #[snafu(display("Space memory is exhausted, space_id:{space_id}.\nBacktrace:\n{backtrace}"))] + SpaceMemoryExhausted { + space_id: SpaceId, + backtrace: Backtrace, + }, + #[snafu(display( "Background flush failed, cannot write more data, err:{}.\nBacktrace:\n{}", msg, @@ -589,7 +595,7 @@ impl<'a> Writer<'a> { if self.instance.should_flush_instance() { if let Some(space) = self.instance.space_store.find_maximum_memory_usage_space() { if let Some(table) = space.find_maximum_memory_usage_table() { - info!("Trying to flush table {} bytes {} in space {} because engine total memtable memory usage exceeds db_write_buffer_size {}.", + debug!("Trying to flush table {} bytes {} in space {} because engine total memtable memory usage exceeds db_write_buffer_size {}.", table.name, table.memtable_memory_usage(), space.id, @@ -606,7 +612,7 @@ impl<'a> Writer<'a> { if self.space.should_flush_space() { if let Some(table) = self.space.find_maximum_memory_usage_table() { - info!("Trying to flush table {} bytes {} in space {} because space total memtable memory usage exceeds space_write_buffer_size {}.", + debug!("Trying to flush table {} bytes {} in space {} because space total memtable memory usage exceeds space_write_buffer_size {}.", table.name, table.memtable_memory_usage() , self.space.id, @@ -701,13 +707,10 @@ impl<'a> Writer<'a> { table: &table_data.name, }) } - Err(_) => { - warn!( - "Failed to acquire write lock for flush table:{}", - table_data.name, - ); - Ok(()) + Err(_) => SpaceMemoryExhausted { + space_id: table_data.space_id, } + .fail(), } } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
