Skip to content

Commit 92d12b1

Browse files
update rustc edition=2024
Signed-off-by: zhangjinpeng87 <zzzhangjinpeng@gmail.com>
1 parent 8630466 commit 92d12b1

File tree

6 files changed

+44
-48
lines changed

6 files changed

+44
-48
lines changed

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
name = "raft-engine"
33
version = "0.4.2"
44
authors = ["The TiKV Project Developers"]
5-
edition = "2018"
6-
rust-version = "1.75.0"
5+
edition = "2024"
6+
rust-version = "1.85.0"
77
description = "A persistent storage engine for Multi-Raft logs"
88
readme = "README.md"
99
repository = "https://github.com/tikv/raft-engine"

src/file_pipe_log/log_file.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,12 @@ impl<F: FileSystem> LogFileWriter<F> {
107107
}
108108
self.capacity += alloc;
109109
}
110-
self.writer.write_all(buf).map_err(|e| {
110+
self.writer.write_all(buf).inspect_err(|_| {
111111
self.writer
112112
.seek(SeekFrom::Start(self.written as u64))
113113
.unwrap_or_else(|e| {
114114
panic!("failed to reseek after write failure: {}", e);
115115
});
116-
e
117116
})?;
118117
self.written = new_written;
119118
Ok(())

src/log_batch.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -372,11 +372,11 @@ impl LogItemBatch {
372372
self.items
373373
}
374374

375-
pub fn iter(&self) -> std::slice::Iter<LogItem> {
375+
pub fn iter(&self) -> std::slice::Iter<'_, LogItem> {
376376
self.items.iter()
377377
}
378378

379-
pub fn drain(&mut self) -> LogItemDrain {
379+
pub fn drain(&mut self) -> LogItemDrain<'_> {
380380
self.item_size = 0;
381381
self.entries_size = 0;
382382
self.checksum = 0;
@@ -882,7 +882,7 @@ impl LogBatch {
882882
}
883883

884884
/// Consumes log items into an iterator.
885-
pub(crate) fn drain(&mut self) -> LogItemDrain {
885+
pub(crate) fn drain(&mut self) -> LogItemDrain<'_> {
886886
debug_assert!(!matches!(self.buf_state, BufState::Incomplete));
887887

888888
self.buf.shrink_to(MAX_LOG_BATCH_BUFFER_CAP);
@@ -1631,13 +1631,13 @@ mod tests {
16311631
fn details(log_batch: &mut LogBatch, entries: &[Entry], regions: usize) {
16321632
for _ in 0..regions {
16331633
log_batch
1634-
.add_entries::<Entry>(thread_rng().gen(), entries)
1634+
.add_entries::<Entry>(thread_rng().r#gen(), entries)
16351635
.unwrap();
16361636
}
16371637
log_batch.finish_populate(0, None).unwrap();
16381638
let _ = log_batch.drain();
16391639
}
1640-
let data: Vec<u8> = (0..128).map(|_| thread_rng().gen()).collect();
1640+
let data: Vec<u8> = (0..128).map(|_| thread_rng().r#gen()).collect();
16411641
let entries = generate_entries(1, 11, Some(&data));
16421642
let mut log_batch = LogBatch::default();
16431643
// warm up

src/memtable.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ impl<A: AllocatorTrait> MemTable<A> {
228228
}
229229

230230
if let Some(g) = rhs.atomic_group.take() {
231-
assert!(self.atomic_group.map_or(true, |(_, end)| end <= g.0));
231+
assert!(self.atomic_group.is_none_or(|(_, end)| end <= g.0));
232232
self.atomic_group = Some(g);
233233
}
234234

@@ -545,7 +545,7 @@ impl<A: AllocatorTrait> MemTable<A> {
545545
}
546546

547547
pub fn apply_rewrite_atomic_group(&mut self, start: FileSeq, end: FileSeq) {
548-
assert!(self.atomic_group.map_or(true, |(_, b)| b <= start));
548+
assert!(self.atomic_group.is_none_or(|(_, b)| b <= start));
549549
self.atomic_group = Some((start, end));
550550
}
551551

src/swappy_allocator.rs

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,8 @@ unsafe impl<A: Allocator + Send + Sync> Allocator for SwappyAllocator<A> {
120120
return swap_r;
121121
}
122122
}
123-
self.0.mem_allocator.allocate(layout).map_err(|e| {
123+
self.0.mem_allocator.allocate(layout).inspect_err(|_| {
124124
self.0.mem_usage.fetch_sub(layout.size(), Ordering::Relaxed);
125-
e
126125
})
127126
}
128127

@@ -145,7 +144,9 @@ unsafe impl<A: Allocator + Send + Sync> Allocator for SwappyAllocator<A> {
145144
}
146145
}
147146
self.0.mem_usage.fetch_sub(layout.size(), Ordering::Relaxed);
148-
self.0.mem_allocator.deallocate(ptr, layout)
147+
unsafe {
148+
self.0.mem_allocator.deallocate(ptr, layout);
149+
}
149150
}
150151

151152
#[inline]
@@ -188,13 +189,9 @@ unsafe impl<A: Allocator + Send + Sync> Allocator for SwappyAllocator<A> {
188189

189190
Ok(new_ptr)
190191
} else {
191-
self.0
192-
.mem_allocator
193-
.grow(ptr, old_layout, new_layout)
194-
.map_err(|e| {
195-
self.0.mem_usage.fetch_sub(diff, Ordering::Relaxed);
196-
e
197-
})
192+
unsafe { self.0.mem_allocator.grow(ptr, old_layout, new_layout) }.inspect_err(|_| {
193+
self.0.mem_usage.fetch_sub(diff, Ordering::Relaxed);
194+
})
198195
}
199196
}
200197

@@ -205,8 +202,10 @@ unsafe impl<A: Allocator + Send + Sync> Allocator for SwappyAllocator<A> {
205202
old_layout: Layout,
206203
new_layout: Layout,
207204
) -> Result<NonNull<[u8]>, AllocError> {
208-
let ptr = self.grow(ptr, old_layout, new_layout)?;
209-
ptr.as_non_null_ptr().as_ptr().write_bytes(0, ptr.len());
205+
let ptr = unsafe { self.grow(ptr, old_layout, new_layout)? };
206+
unsafe {
207+
ptr.as_non_null_ptr().as_ptr().write_bytes(0, ptr.len());
208+
}
210209
Ok(ptr)
211210
}
212211

@@ -245,20 +244,16 @@ unsafe impl<A: Allocator + Send + Sync> Allocator for SwappyAllocator<A> {
245244
} else {
246245
// The new layout should still be mapped to disk. Reuse old pointer.
247246
Ok(NonNull::slice_from_raw_parts(
248-
NonNull::new_unchecked(ptr.as_ptr()),
247+
unsafe { NonNull::new_unchecked(ptr.as_ptr()) },
249248
new_layout.size(),
250249
))
251250
}
252251
} else {
253-
self.0
254-
.mem_allocator
255-
.shrink(ptr, old_layout, new_layout)
256-
.map(|p| {
257-
self.0
258-
.mem_usage
259-
.fetch_sub(old_layout.size() - new_layout.size(), Ordering::Relaxed);
260-
p
261-
})
252+
unsafe { self.0.mem_allocator.shrink(ptr, old_layout, new_layout) }.inspect(|_| {
253+
self.0
254+
.mem_usage
255+
.fetch_sub(old_layout.size() - new_layout.size(), Ordering::Relaxed);
256+
})
262257
}
263258
}
264259
}
@@ -411,7 +406,9 @@ mod tests {
411406
}
412407
unsafe fn deallocate(&self, ptr: NonNull<u8>, layout: Layout) {
413408
self.dealloc.fetch_add(1, Ordering::Relaxed);
414-
std::alloc::Global.deallocate(ptr, layout)
409+
unsafe {
410+
std::alloc::Global.deallocate(ptr, layout);
411+
}
415412
}
416413
unsafe fn grow(
417414
&self,
@@ -423,7 +420,7 @@ mod tests {
423420
if self.err_mode.load(Ordering::Relaxed) {
424421
Err(AllocError)
425422
} else {
426-
std::alloc::Global.grow(ptr, old_layout, new_layout)
423+
unsafe { std::alloc::Global.grow(ptr, old_layout, new_layout) }
427424
}
428425
}
429426
unsafe fn shrink(
@@ -436,7 +433,7 @@ mod tests {
436433
if self.err_mode.load(Ordering::Relaxed) {
437434
Err(AllocError)
438435
} else {
439-
std::alloc::Global.shrink(ptr, old_layout, new_layout)
436+
unsafe { std::alloc::Global.shrink(ptr, old_layout, new_layout) }
440437
}
441438
}
442439
}

src/test_util.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) 2017-present, PingCAP, Inc. Licensed under Apache-2.0.
22

33
use std::panic::{self, AssertUnwindSafe};
4+
use std::sync::Arc;
45

56
use raft::eraftpb::Entry;
67

@@ -62,34 +63,33 @@ where
6263
result
6364
}
6465

66+
type PanicHook = dyn Fn(&panic::PanicHookInfo<'_>) + Sync + Send + 'static;
67+
6568
pub struct PanicGuard {
66-
prev_hook: *mut (dyn Fn(&panic::PanicHookInfo<'_>) + Sync + Send + 'static),
69+
prev_hook: Option<Arc<PanicHook>>,
6770
}
6871

69-
struct PointerHolder<T: ?Sized>(*mut T);
70-
71-
unsafe impl<T: Send + ?Sized> Send for PointerHolder<T> {}
72-
unsafe impl<T: Sync + ?Sized> Sync for PointerHolder<T> {}
73-
7472
impl PanicGuard {
7573
pub fn with_prompt(s: String) -> Self {
76-
let prev_hook = Box::into_raw(panic::take_hook());
77-
let sendable_prev_hook = PointerHolder(prev_hook);
74+
let prev_hook: Arc<PanicHook> = panic::take_hook().into();
75+
let hook = Arc::clone(&prev_hook);
7876
// FIXME: Use thread local hook.
7977
panic::set_hook(Box::new(move |info| {
8078
eprintln!("{s}");
81-
unsafe { (*sendable_prev_hook.0)(info) };
79+
hook(info);
8280
}));
83-
PanicGuard { prev_hook }
81+
PanicGuard {
82+
prev_hook: Some(prev_hook),
83+
}
8484
}
8585
}
8686

8787
impl Drop for PanicGuard {
8888
fn drop(&mut self) {
8989
if !std::thread::panicking() {
9090
let _ = panic::take_hook();
91-
unsafe {
92-
panic::set_hook(Box::from_raw(self.prev_hook));
91+
if let Some(prev_hook) = self.prev_hook.take() {
92+
panic::set_hook(Box::new(move |info| prev_hook(info)));
9393
}
9494
}
9595
}

0 commit comments

Comments
 (0)