Skip to content

Commit 89e7db0

Browse files
committed
[ISSUE #1221]Optimize MappedFile method
1 parent d66f037 commit 89e7db0

6 files changed

Lines changed: 26 additions & 20 deletions

File tree

rocketmq-cli/src/content_show.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ use std::fs;
1919
use std::path::PathBuf;
2020

2121
use bytes::Buf;
22+
use cheetah_string::CheetahString;
2223
use rocketmq_common::common::message::message_decoder;
2324
use rocketmq_store::log_file::mapped_file::default_mapped_file_impl::DefaultMappedFile;
2425
use rocketmq_store::log_file::mapped_file::MappedFile;
@@ -34,7 +35,7 @@ pub fn print_content(from: Option<u32>, to: Option<u32>, path: Option<PathBuf>)
3435
let file_metadata = fs::metadata(path_buf.clone()).unwrap();
3536
println!("file size: {}B", file_metadata.len());
3637
let mapped_file = DefaultMappedFile::new(
37-
path_buf.to_os_string().to_string_lossy().to_string(),
38+
CheetahString::from(path_buf.to_string_lossy().to_string()),
3839
file_metadata.len(),
3940
);
4041
// read message number

rocketmq-store/src/base/append_message_callback.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ impl DefaultAppendMessageCallback {
9999
}
100100
}
101101

102-
#[allow(unused_variables)]
103102
impl AppendMessageCallback for DefaultAppendMessageCallback {
104103
fn do_append<MF: MappedFile>(
105104
&self,

rocketmq-store/src/consume_queue/mapped_file_queue.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ use std::sync::atomic::AtomicU64;
2222
use std::sync::atomic::Ordering;
2323
use std::sync::Arc;
2424

25+
use cheetah_string::CheetahString;
2526
use log::warn;
2627
use parking_lot::RwLock;
2728
use rocketmq_common::UtilAll::offset_to_file_name;
@@ -142,8 +143,10 @@ impl MappedFileQueue {
142143
return false;
143144
}
144145

145-
let mapped_file =
146-
DefaultMappedFile::new(file.to_string_lossy().to_string(), self.mapped_file_size);
146+
let mapped_file = DefaultMappedFile::new(
147+
CheetahString::from_string(file.to_string_lossy().to_string()),
148+
self.mapped_file_size,
149+
);
147150
// Set wrote, flushed, committed positions for mapped_file
148151
mapped_file.set_wrote_position(self.mapped_file_size as i32);
149152
mapped_file.set_flushed_position(self.mapped_file_size as i32);
@@ -210,7 +213,7 @@ impl MappedFileQueue {
210213
) -> Option<Arc<DefaultMappedFile>> {
211214
let mut mapped_file = match self.allocate_mapped_file_service {
212215
None => DefaultMappedFile::new(
213-
next_file_path.to_string_lossy().to_string(),
216+
CheetahString::from_string(next_file_path.to_string_lossy().to_string()),
214217
self.mapped_file_size,
215218
),
216219
Some(ref _value) => {

rocketmq-store/src/index/index_file.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ use std::sync::Arc;
1919

2020
use bytes::Buf;
2121
use bytes::Bytes;
22+
use cheetah_string::CheetahString;
2223
use rocketmq_common::common::hasher::string_hasher::JavaStringHasher;
2324

2425
use crate::index::index_header::IndexHeader;
@@ -69,7 +70,7 @@ impl IndexFile {
6970
let file_total_size =
7071
INDEX_HEADER_SIZE + (hash_slot_num * HASH_SLOT_SIZE) + (index_num * INDEX_SIZE);
7172
let mapped_file = Arc::new(DefaultMappedFile::new(
72-
file_name.to_string(),
73+
CheetahString::from_slice(file_name),
7374
file_total_size as u64,
7475
));
7576

@@ -94,7 +95,7 @@ impl IndexFile {
9495
index_file
9596
}
9697

97-
pub fn get_file_name(&self) -> String {
98+
pub fn get_file_name(&self) -> &CheetahString {
9899
self.mapped_file.get_file_name()
99100
}
100101

rocketmq-store/src/log_file/mapped_file.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ use std::io;
2020
use std::sync::Arc;
2121

2222
use bytes::Bytes;
23+
use cheetah_string::CheetahString;
2324
use rocketmq_common::common::message::message_batch::MessageExtBatch;
2425
use rocketmq_common::common::message::message_ext_broker_inner::MessageExtBrokerInner;
2526

@@ -37,7 +38,7 @@ pub trait MappedFile {
3738
///
3839
/// # Returns
3940
/// A `String` representing the name of the file.
40-
fn get_file_name(&self) -> String;
41+
fn get_file_name(&self) -> &CheetahString;
4142

4243
/// Renames the mapped file to the specified file name.
4344
///

rocketmq-store/src/log_file/mapped_file/default_mapped_file_impl.rs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ use std::sync::Arc;
2828

2929
use bytes::Bytes;
3030
use bytes::BytesMut;
31+
use cheetah_string::CheetahString;
3132
use memmap2::MmapMut;
3233
use rocketmq_common::common::message::message_batch::MessageExtBatch;
3334
use rocketmq_common::common::message::message_ext_broker_inner::MessageExtBrokerInner;
@@ -58,7 +59,7 @@ pub struct DefaultMappedFile {
5859
file: File,
5960
mmapped_file: SyncUnsafeCellWrapper<MmapMut>,
6061
transient_store_pool: Option<TransientStorePool>,
61-
file_name: String,
62+
file_name: CheetahString,
6263
file_from_offset: u64,
6364
mapped_byte_buffer: Option<bytes::Bytes>,
6465
wrote_position: AtomicI32,
@@ -94,14 +95,14 @@ impl PartialEq for DefaultMappedFile {
9495

9596
impl Default for DefaultMappedFile {
9697
fn default() -> Self {
97-
Self::new(String::new(), 0)
98+
Self::new(CheetahString::new(), 0)
9899
}
99100
}
100101

101102
impl DefaultMappedFile {
102-
pub fn new(file_name: String, file_size: u64) -> Self {
103+
pub fn new(file_name: CheetahString, file_size: u64) -> Self {
103104
let file_from_offset = Self::get_file_from_offset(&file_name);
104-
let path_buf = PathBuf::from(file_name.clone());
105+
let path_buf = PathBuf::from(file_name.as_str());
105106
ensure_dir_ok(path_buf.parent().unwrap().to_str().unwrap());
106107
let file = OpenOptions::new()
107108
.read(true)
@@ -140,8 +141,8 @@ impl DefaultMappedFile {
140141
}
141142
}
142143

143-
fn get_file_from_offset(file_name: &String) -> u64 {
144-
let file_from_offset = PathBuf::from(file_name.to_owned())
144+
fn get_file_from_offset(file_name: &CheetahString) -> u64 {
145+
let file_from_offset = PathBuf::from(file_name.as_str())
145146
.file_name()
146147
.unwrap()
147148
.to_str()
@@ -151,8 +152,8 @@ impl DefaultMappedFile {
151152
file_from_offset
152153
}
153154

154-
fn build_file(file_name: &String, file_size: u64) -> File {
155-
let path = PathBuf::from(file_name.clone());
155+
fn build_file(file_name: &CheetahString, file_size: u64) -> File {
156+
let path = PathBuf::from(file_name.as_str());
156157
let file = OpenOptions::new()
157158
.read(true)
158159
.write(true)
@@ -166,12 +167,12 @@ impl DefaultMappedFile {
166167
}
167168

168169
pub fn new_with_transient_store_pool(
169-
file_name: String,
170+
file_name: CheetahString,
170171
file_size: u64,
171172
transient_store_pool: TransientStorePool,
172173
) -> Self {
173174
let file_from_offset = Self::get_file_from_offset(&file_name);
174-
let path_buf = PathBuf::from(file_name.clone());
175+
let path_buf = PathBuf::from(file_name.as_str());
175176
let file = OpenOptions::new()
176177
.read(true)
177178
.write(true)
@@ -212,8 +213,8 @@ impl DefaultMappedFile {
212213

213214
#[allow(unused_variables)]
214215
impl MappedFile for DefaultMappedFile {
215-
fn get_file_name(&self) -> String {
216-
self.file_name.clone()
216+
fn get_file_name(&self) -> &CheetahString {
217+
&self.file_name
217218
}
218219

219220
fn rename_to(&mut self, file_name: &str) -> bool {

0 commit comments

Comments
 (0)