Skip to content

Commit b6e85af

Browse files
authored
Update serde, so TiKV can update time crate (#390)
Signed-off-by: Yang Zhang <yang.zhang@pingcap.com>
1 parent ef932c4 commit b6e85af

File tree

24 files changed

+237
-230
lines changed

24 files changed

+237
-230
lines changed

.github/workflows/rust.yml

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -15,43 +15,6 @@ env:
1515
CARGO_TERM_COLOR: always
1616

1717
jobs:
18-
nightly:
19-
runs-on: ${{ matrix.os }}
20-
strategy:
21-
matrix:
22-
# tests with sanitizer on `ubuntu-latest` is supported by
23-
# self-defined `nihtly test` job, so we don't need to test it here.
24-
os: [ macos-latest ]
25-
steps:
26-
- uses: actions/checkout@v2
27-
with:
28-
ref: ${{ github.event.pull_request.head.sha }}
29-
- name: Install nightly toolchain
30-
uses: actions-rs/toolchain@v1
31-
with:
32-
profile: minimal
33-
toolchain: nightly-2025-04-03
34-
override: true
35-
components: rustfmt, clippy, rust-src
36-
- uses: Swatinem/rust-cache@v1
37-
with:
38-
sharedKey: ${{ matrix.os }}
39-
- name: Cache dependencies
40-
if: ${{ matrix.os == 'ubuntu-latest' }}
41-
run: if [[ ! -e ~/.cargo/bin/grcov ]]; then cargo install grcov; fi
42-
- name: Format
43-
run: |
44-
make format
45-
git diff --exit-code
46-
- name: Clippy
47-
run: make clippy
48-
env:
49-
EXTRA_CARGO_ARGS: '--fix'
50-
- name: Run tests
51-
run: make test
52-
env:
53-
RUST_BACKTRACE: 1
54-
EXTRA_CARGO_ARGS: '--verbose'
5518
stable:
5619
runs-on: ${{ matrix.os }}
5720
strategy:
@@ -83,7 +46,7 @@ jobs:
8346
WITH_STABLE_TOOLCHAIN: 'force'
8447
coverage:
8548
runs-on: ubuntu-latest
86-
needs: nightly
49+
needs: stable
8750
steps:
8851
- uses: actions/checkout@v2
8952
with:
@@ -92,7 +55,7 @@ jobs:
9255
uses: actions-rs/toolchain@v1
9356
with:
9457
profile: minimal
95-
toolchain: nightly-2025-04-03
58+
toolchain: nightly-2026-01-30
9659
override: true
9760
components: llvm-tools-preview
9861
- uses: Swatinem/rust-cache@v1

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "raft-engine"
33
version = "0.4.2"
44
authors = ["The TiKV Project Developers"]
5-
edition = "2018"
5+
edition = "2024"
66
rust-version = "1.85.0"
77
description = "A persistent storage engine for Multi-Raft logs"
88
readme = "README.md"
@@ -58,7 +58,7 @@ protobuf = "2"
5858
rayon = "1.5"
5959
rhai = { version = "1.7", features = ["sync"], optional = true }
6060
scopeguard = "1.1"
61-
serde = { version = "=1.0.194", features = ["derive"] }
61+
serde = { version = "1.0", features = ["derive"] }
6262
serde_repr = "0.1"
6363
strum = { version = "0.26.2", features = ["derive"] }
6464
thiserror = "1.0"

examples/fork.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use std::path::Path;
22
use std::sync::Arc;
33

4-
use raft_engine::env::DefaultFileSystem;
54
use raft_engine::Config;
65
use raft_engine::Engine;
6+
use raft_engine::env::DefaultFileSystem;
77

88
fn main() {
99
let mut args = std::env::args();

src/config.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use log::{info, warn};
44
use serde::{Deserialize, Serialize};
55

66
use crate::pipe_log::Version;
7-
use crate::{util::ReadableSize, Result};
7+
use crate::{Result, util::ReadableSize};
88

99
const MIN_RECOVERY_READ_BLOCK_SIZE: usize = 512;
1010
const MIN_RECOVERY_THREADS: usize = 1;
@@ -343,9 +343,11 @@ mod tests {
343343
let mut load: Config = toml::from_str(old).unwrap();
344344
load.sanitize().unwrap();
345345
// Downgrade to older version.
346-
assert!(toml::to_string(&load)
347-
.unwrap()
348-
.contains("tolerate-corrupted-tail-records"));
346+
assert!(
347+
toml::to_string(&load)
348+
.unwrap()
349+
.contains("tolerate-corrupted-tail-records")
350+
);
349351
}
350352

351353
#[test]

src/consistency.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
use hashbrown::HashMap;
44

5+
use crate::Result;
56
use crate::file_pipe_log::ReplayMachine;
67
use crate::log_batch::{LogItemBatch, LogItemContent};
78
use crate::pipe_log::{FileId, LogQueue};
8-
use crate::Result;
99

1010
/// A `ConsistencyChecker` scans for log entry holes in a log queue. It will
1111
/// return a list of corrupted raft groups along with their last valid log

src/engine.rs

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
use std::cell::{Cell, RefCell};
44
use std::marker::PhantomData;
55
use std::path::Path;
6-
use std::sync::{mpsc, Arc, Mutex};
6+
use std::sync::{Arc, Mutex, mpsc};
77
use std::thread::{Builder as ThreadBuilder, JoinHandle};
88
use std::time::{Duration, Instant};
99

1010
use log::{error, info};
11-
use protobuf::{parse_from_bytes, Message};
11+
use protobuf::{Message, parse_from_bytes};
1212

1313
use crate::config::{Config, RecoveryMode};
1414
use crate::consistency::ConsistencyChecker;
@@ -22,7 +22,7 @@ use crate::metrics::*;
2222
use crate::pipe_log::{FileBlockHandle, FileId, LogQueue, PipeLog};
2323
use crate::purge::{PurgeHook, PurgeManager};
2424
use crate::write_barrier::{WriteBarrier, Writer};
25-
use crate::{perf_context, Error, GlobalStats, Result};
25+
use crate::{Error, GlobalStats, Result, perf_context};
2626

2727
const METRICS_FLUSH_INTERVAL: Duration = Duration::from_secs(30);
2828
/// Max times for `write`.
@@ -106,11 +106,13 @@ where
106106
let memtables_clone = memtables.clone();
107107
let metrics_flusher = ThreadBuilder::new()
108108
.name("re-metrics".into())
109-
.spawn(move || loop {
110-
stats_clone.flush_metrics();
111-
memtables_clone.flush_metrics();
112-
if rx.recv_timeout(METRICS_FLUSH_INTERVAL).is_ok() {
113-
break;
109+
.spawn(move || {
110+
loop {
111+
stats_clone.flush_metrics();
112+
memtables_clone.flush_metrics();
113+
if rx.recv_timeout(METRICS_FLUSH_INTERVAL).is_ok() {
114+
break;
115+
}
114116
}
115117
})?;
116118

@@ -648,14 +650,14 @@ where
648650
pub(crate) mod tests {
649651
use super::*;
650652
use crate::env::{ObfuscatedFileSystem, Permission};
651-
use crate::file_pipe_log::{parse_reserved_file_name, FileNameExt};
653+
use crate::file_pipe_log::{FileNameExt, parse_reserved_file_name};
652654
use crate::log_batch::AtomicGroupBuilder;
653655
use crate::pipe_log::Version;
654-
use crate::test_util::{generate_entries, PanicGuard};
656+
use crate::test_util::{PanicGuard, generate_entries};
655657
use crate::util::ReadableSize;
656658
use kvproto::raft_serverpb::RaftLocalState;
657659
use raft::eraftpb::Entry;
658-
use rand::{thread_rng, Rng};
660+
use rand::{Rng, thread_rng};
659661
use std::collections::{BTreeSet, HashSet};
660662
use std::fs::OpenOptions;
661663
use std::path::PathBuf;
@@ -1231,9 +1233,11 @@ pub(crate) mod tests {
12311233
// GC all log entries. Won't trigger purge because total size is not enough.
12321234
let count = engine.compact_to(1, 100);
12331235
assert_eq!(count, 100);
1234-
assert!(!engine
1235-
.purge_manager
1236-
.needs_rewrite_log_files(LogQueue::Append));
1236+
assert!(
1237+
!engine
1238+
.purge_manager
1239+
.needs_rewrite_log_files(LogQueue::Append)
1240+
);
12371241

12381242
// Append more logs to make total size greater than `purge_threshold`.
12391243
for index in 100..250 {
@@ -1243,9 +1247,11 @@ pub(crate) mod tests {
12431247
// GC first 101 log entries.
12441248
assert_eq!(engine.compact_to(1, 101), 1);
12451249
// Needs to purge because the total size is greater than `purge_threshold`.
1246-
assert!(engine
1247-
.purge_manager
1248-
.needs_rewrite_log_files(LogQueue::Append));
1250+
assert!(
1251+
engine
1252+
.purge_manager
1253+
.needs_rewrite_log_files(LogQueue::Append)
1254+
);
12491255

12501256
let old_min_file_seq = engine.file_span(LogQueue::Append).0;
12511257
let will_force_compact = engine.purge_expired_files().unwrap();
@@ -1259,9 +1265,11 @@ pub(crate) mod tests {
12591265

12601266
assert_eq!(engine.compact_to(1, 102), 1);
12611267
// Needs to purge because the total size is greater than `purge_threshold`.
1262-
assert!(engine
1263-
.purge_manager
1264-
.needs_rewrite_log_files(LogQueue::Append));
1268+
assert!(
1269+
engine
1270+
.purge_manager
1271+
.needs_rewrite_log_files(LogQueue::Append)
1272+
);
12651273
let will_force_compact = engine.purge_expired_files().unwrap();
12661274
// The region needs to be force compacted because the threshold is reached.
12671275
assert!(!will_force_compact.is_empty());
@@ -1350,9 +1358,11 @@ pub(crate) mod tests {
13501358
engine.append(11, 1, 11, Some(&data));
13511359

13521360
// The engine needs purge, and all old entries should be rewritten.
1353-
assert!(engine
1354-
.purge_manager
1355-
.needs_rewrite_log_files(LogQueue::Append));
1361+
assert!(
1362+
engine
1363+
.purge_manager
1364+
.needs_rewrite_log_files(LogQueue::Append)
1365+
);
13561366
assert!(engine.purge_expired_files().unwrap().is_empty());
13571367
assert!(engine.file_span(LogQueue::Append).0 > 1);
13581368

@@ -1386,9 +1396,11 @@ pub(crate) mod tests {
13861396
}
13871397
}
13881398

1389-
assert!(engine
1390-
.purge_manager
1391-
.needs_rewrite_log_files(LogQueue::Append));
1399+
assert!(
1400+
engine
1401+
.purge_manager
1402+
.needs_rewrite_log_files(LogQueue::Append)
1403+
);
13921404
assert!(engine.purge_expired_files().unwrap().is_empty());
13931405
}
13941406

@@ -1410,7 +1422,7 @@ pub(crate) mod tests {
14101422
let empty_entry = Entry::new();
14111423
assert_eq!(empty_entry.compute_size(), 0);
14121424
log_batch
1413-
.add_entries::<Entry>(0, &[empty_entry.clone()])
1425+
.add_entries::<Entry>(0, std::slice::from_ref(&empty_entry))
14141426
.unwrap();
14151427
engine.write(&mut log_batch, false).unwrap();
14161428
let empty_state = RaftLocalState::new();
@@ -1420,7 +1432,7 @@ pub(crate) mod tests {
14201432
.unwrap();
14211433
engine.write(&mut log_batch, false).unwrap();
14221434
log_batch
1423-
.add_entries::<Entry>(2, &[empty_entry.clone()])
1435+
.add_entries::<Entry>(2, std::slice::from_ref(&empty_entry))
14241436
.unwrap();
14251437
log_batch
14261438
.put_message(2, b"key".to_vec(), &empty_state)

src/env/log_fd/unix.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ use log::error;
88
use std::io::Result as IoResult;
99
use std::os::unix::io::RawFd;
1010

11+
use nix::NixPath;
1112
use nix::errno::Errno;
1213
use nix::fcntl::{self, OFlag};
1314
use nix::sys::stat::Mode;
1415
use nix::sys::uio::{pread, pwrite};
15-
use nix::unistd::{close, ftruncate, lseek, Whence};
16-
use nix::NixPath;
16+
use nix::unistd::{Whence, close, ftruncate, lseek};
1717

1818
fn from_nix_error(e: nix::Error, custom: &'static str) -> std::io::Error {
1919
let kind = std::io::Error::from(e).kind();

src/env/obfuscated.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
use std::io::{Read, Result as IoResult, Seek, SeekFrom, Write};
44
use std::path::Path;
5-
use std::sync::atomic::{AtomicUsize, Ordering};
65
use std::sync::Arc;
6+
use std::sync::atomic::{AtomicUsize, Ordering};
77

88
use crate::env::{DefaultFileSystem, FileSystem, Permission, WriteExt};
99

src/file_pipe_log/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ mod pipe;
1010
mod pipe_builder;
1111
mod reader;
1212

13-
pub use format::{parse_reserved_file_name, FileNameExt};
13+
pub use format::{FileNameExt, parse_reserved_file_name};
1414
pub use pipe::DualPipes as FilePipeLog;
1515
pub use pipe_builder::{
1616
DefaultMachineFactory, DualPipesBuilder as FilePipeLogBuilder, RecoveryConfig, ReplayMachine,
@@ -173,7 +173,7 @@ pub mod debug {
173173
use crate::env::DefaultFileSystem;
174174
use crate::log_batch::{Command, LogBatch};
175175
use crate::pipe_log::{FileBlockHandle, LogFileContext, LogQueue, Version};
176-
use crate::test_util::{generate_entries, PanicGuard};
176+
use crate::test_util::{PanicGuard, generate_entries};
177177
use raft::eraftpb::Entry;
178178

179179
#[test]

src/file_pipe_log/pipe.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ use crate::metrics::*;
1919
use crate::pipe_log::{
2020
FileBlockHandle, FileId, FileSeq, LogFileContext, LogQueue, PipeLog, ReactiveBytes,
2121
};
22-
use crate::{perf_context, Error, Result};
22+
use crate::{Error, Result, perf_context};
2323

24-
use super::format::{build_reserved_file_name, FileNameExt, LogFileFormat};
24+
use super::format::{FileNameExt, LogFileFormat, build_reserved_file_name};
2525
use super::log_file::build_file_reader;
26-
use super::log_file::{build_file_writer, LogFileWriter};
26+
use super::log_file::{LogFileWriter, build_file_writer};
2727

2828
pub type PathId = usize;
2929
pub type Paths = Vec<PathBuf>;
@@ -614,8 +614,10 @@ mod tests {
614614
// Only one thread can hold file lock
615615
let r2 = new_test_pipes(&cfg);
616616

617-
assert!(format!("{}", r2.err().unwrap())
618-
.contains("maybe another instance is using this directory"));
617+
assert!(
618+
format!("{}", r2.err().unwrap())
619+
.contains("maybe another instance is using this directory")
620+
);
619621
}
620622

621623
#[test]

0 commit comments

Comments
 (0)