From 8c239499ff119b38b3d0a57d2a744dd89b7e11dc Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Sat, 17 Feb 2024 12:27:50 +1300 Subject: [PATCH] Don't just presume ErrorKind::Other is always "Out of space" --- src/store/event_store.rs | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/store/event_store.rs b/src/store/event_store.rs index 3594d0b..89cb903 100644 --- a/src/store/event_store.rs +++ b/src/store/event_store.rs @@ -98,25 +98,28 @@ impl EventStore { Ok(offset) => return Ok(offset), Err(e) => { if e.kind() == std::io::ErrorKind::Other { - // presume it was Out of Space - // Determine the new size - let new_file_len = { - let file_len = self.event_map_file_len.load(Ordering::Relaxed); - file_len + EVENT_MAP_CHUNK - }; + if e.to_string() == "Out of space" { + // Determine the new size + let new_file_len = { + let file_len = self.event_map_file_len.load(Ordering::Relaxed); + file_len + EVENT_MAP_CHUNK + }; - // Grow the file - self.event_map_file.set_len(new_file_len as u64)?; + // Grow the file + self.event_map_file.set_len(new_file_len as u64)?; - // Resize the memory map - self.event_map.resize(new_file_len)?; + // Resize the memory map + self.event_map.resize(new_file_len)?; - // Save this new length - self.event_map_file_len - .store(new_file_len, Ordering::Relaxed); + // Save this new length + self.event_map_file_len + .store(new_file_len, Ordering::Relaxed); - // Try again - continue; + // Try again + continue; + } else { + return Err(e.into()); + } } else { return Err(e.into()); }