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]

Reply via email to