Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

raftstore-v2: implement local read for raftstore-v2 #13375

Merged
merged 48 commits into from
Oct 11, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
2b16eef
ReadResponseTrait + LocalReaderTrait
SpadeA-Tang Aug 29, 2022
f326f8f
update
SpadeA-Tang Aug 30, 2022
faa5f05
remove trait and wrap LocalReader
SpadeA-Tang Aug 30, 2022
43fcacd
before remove readRespnoseTrait
SpadeA-Tang Aug 30, 2022
992a4d7
Remove ReadResponseTrait and cargo c pass
SpadeA-Tang Aug 30, 2022
c0d4c35
half way for v2's snapshot
SpadeA-Tang Aug 30, 2022
8648b31
update snapshot in v2
SpadeA-Tang Aug 30, 2022
16219d6
move router from LocalReaderCore to LocalReader
SpadeA-Tang Aug 31, 2022
f7f1cd8
clippy
SpadeA-Tang Sep 1, 2022
86af68b
format
SpadeA-Tang Sep 1, 2022
1fd8ac6
update
SpadeA-Tang Sep 5, 2022
c2df8d2
update
SpadeA-Tang Sep 5, 2022
c3db075
snapshot update
SpadeA-Tang Sep 8, 2022
bde4e3d
add test(partial)
SpadeA-Tang Sep 8, 2022
9d6a39f
refine test
SpadeA-Tang Sep 13, 2022
6f73441
update
SpadeA-Tang Sep 13, 2022
611748f
remove unused code
SpadeA-Tang Sep 13, 2022
7db5a4c
modify test
SpadeA-Tang Sep 13, 2022
b28b39a
resolve merge
SpadeA-Tang Sep 13, 2022
f88011d
update
SpadeA-Tang Sep 13, 2022
e792726
format
SpadeA-Tang Sep 14, 2022
ff15c7f
address comment
SpadeA-Tang Sep 14, 2022
4888e96
change the way to renew lease in advance
SpadeA-Tang Sep 14, 2022
1500953
remove unused code
SpadeA-Tang Sep 16, 2022
074b61c
address comment
SpadeA-Tang Sep 20, 2022
5e9f7cb
update
SpadeA-Tang Sep 21, 2022
cb08e71
replace generic type of ReadExecutor by associated type
SpadeA-Tang Sep 21, 2022
75a4061
resolve merge
SpadeA-Tang Sep 21, 2022
8862e7c
update
SpadeA-Tang Sep 22, 2022
d0d97ab
impl ServerRaftStoreRouter for v2
SpadeA-Tang Sep 22, 2022
32b525c
remove some generic types in LocalReader
SpadeA-Tang Sep 22, 2022
abbc7cf
add end to end test, and the some code in Cluster
SpadeA-Tang Sep 22, 2022
b6aa69e
merge conflict
SpadeA-Tang Sep 22, 2022
69952e6
address comment
SpadeA-Tang Sep 22, 2022
a8ffb1b
resolve deadlock
SpadeA-Tang Sep 22, 2022
34176cb
remove unused import
SpadeA-Tang Sep 22, 2022
2b24fa1
add error processing for renew lease
SpadeA-Tang Sep 23, 2022
d7ff6d9
address comment
SpadeA-Tang Sep 26, 2022
446f70d
update
SpadeA-Tang Sep 26, 2022
6fa2ea2
remove RefCell
SpadeA-Tang Sep 27, 2022
c6e979b
address comment
SpadeA-Tang Sep 27, 2022
57a3ecd
update
SpadeA-Tang Sep 27, 2022
62edf8f
merge conflict
SpadeA-Tang Sep 27, 2022
b5f7e88
get snap race condition
SpadeA-Tang Oct 8, 2022
521f976
merge conflict
SpadeA-Tang Oct 8, 2022
26bc405
update
SpadeA-Tang Oct 8, 2022
0ee256b
update
SpadeA-Tang Oct 11, 2022
5019283
Merge branch 'master' into localreader
ti-chi-bot Oct 11, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
32 changes: 19 additions & 13 deletions components/raftstore-v2/src/batch/store.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
// Copyright 2022 TiKV Project Authors. Licensed under Apache-2.0.

use std::{
cell::Cell,
mem,
ops::{Deref, DerefMut},
sync::{atomic::AtomicUsize, Arc, Mutex},
sync::{Arc, Mutex},
time::Duration,
};

Expand All @@ -23,7 +21,7 @@ use kvproto::{
use raft::INVALID_ID;
use raftstore::store::{
fsm::store::PeerTickBatch, local_metrics::RaftMetrics, Config, RaftlogFetchRunner,
RaftlogFetchTask, StoreWriters, Transport, WriteMsg, WriteSenders,
RaftlogFetchTask, StoreWriters, Transport, WriteSenders,
};
use slog::Logger;
use tikv_util::{
Expand All @@ -42,8 +40,8 @@ use time::Timespec;

use crate::{
fsm::{PeerFsm, PeerFsmDelegate, SenderFsmPair, StoreFsm, StoreFsmDelegate, StoreMeta},
raft::{Peer, Storage},
router::{PeerMsg, PeerTick, QueryResChannel, StoreMsg},
raft::Storage,
router::{PeerMsg, PeerTick, StoreMsg},
Error, Result,
};

Expand Down Expand Up @@ -390,7 +388,7 @@ impl<EK: KvEngine, ER: RaftEngine> StoreSystem<EK, ER> {
log_fetch_scheduler,
&mut workers.store_writers,
self.logger.clone(),
store_meta,
store_meta.clone(),
);
self.workers = Some(workers);
let peers = builder.init()?;
Expand All @@ -401,12 +399,20 @@ impl<EK: KvEngine, ER: RaftEngine> StoreSystem<EK, ER> {

let mut mailboxes = Vec::with_capacity(peers.len());
let mut address = Vec::with_capacity(peers.len());
for (region_id, (tx, fsm)) in peers {
address.push(region_id);
mailboxes.push((
region_id,
BasicMailbox::new(tx, fsm, router.state_cnt().clone()),
));
{
let mut meta = store_meta.as_ref().lock().unwrap();
for (region_id, (tx, fsm)) in peers {
meta.readers
.insert(region_id, fsm.peer().generate_read_delegate());
meta.tablet_caches
.insert(region_id, fsm.peer().tablet().clone());

address.push(region_id);
mailboxes.push((
region_id,
BasicMailbox::new(tx, fsm, router.state_cnt().clone()),
));
}
}
router.register_all(mailboxes);

Expand Down
2 changes: 1 addition & 1 deletion components/raftstore-v2/src/bootstrap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use error_code::ErrorCodeExt;
use fail::fail_point;
use kvproto::{
metapb::{Region, Store},
raft_serverpb::{RaftLocalState, RegionLocalState, StoreIdent},
raft_serverpb::{RaftLocalState, StoreIdent},
};
use pd_client::PdClient;
use raft::INVALID_ID;
Expand Down
3 changes: 1 addition & 2 deletions components/raftstore-v2/src/fsm/peer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@ use std::borrow::Cow;
use batch_system::{BasicMailbox, Fsm};
use crossbeam::channel::TryRecvError;
use engine_traits::{KvEngine, RaftEngine, TabletFactory};
use kvproto::metapb;
use raftstore::store::{Config, Transport};
use slog::{debug, error, info, trace, Logger};
use tikv_util::{
is_zero_duration,
mpsc::{self, LooseBoundedSender, Receiver, Sender},
mpsc::{self, LooseBoundedSender, Receiver},
time::{duration_to_sec, Instant},
yatp_pool::FuturePool,
};
Expand Down
1 change: 0 additions & 1 deletion components/raftstore-v2/src/fsm/store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ use std::time::SystemTime;

use batch_system::Fsm;
use collections::HashMap;
use crossbeam::channel::TryRecvError;
use engine_traits::{KvEngine, RaftEngine};
use raftstore::store::{Config, ReadDelegate};
use slog::{o, Logger};
Expand Down
1 change: 0 additions & 1 deletion components/raftstore-v2/src/operation/command/write/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ use raftstore::{
},
Result,
};
use tikv_util::Either;

use crate::{
batch::StoreContext,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
// Copyright 2022 TiKV Project Authors. Licensed under Apache-2.0.

use std::borrow::Cow;

use engine_traits::{CF_DEFAULT, CF_LOCK, CF_WRITE};
use kvproto::raft_cmdpb::{CmdType, RaftCmdRequest, RaftRequestHeader, Request};
use protobuf::{CodedInputStream, Message, SingularPtrField};
use tikv_util::Either;

use crate::router::CmdResChannel;

Expand Down
2 changes: 1 addition & 1 deletion components/raftstore-v2/src/operation/life.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ use tikv_util::store::find_peer;

use crate::{
batch::StoreContext,
fsm::{PeerFsm, Store, StoreFsmDelegate},
fsm::{PeerFsm, Store},
raft::{Peer, Storage},
router::PeerMsg,
};
Expand Down
2 changes: 2 additions & 0 deletions components/raftstore-v2/src/operation/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ mod ready;
pub use command::{CommittedEntries, SimpleWriteDecoder, SimpleWriteEncoder};
pub use life::DestroyProgress;
pub use ready::AsyncWriter;

pub(crate) use self::query::LocalReader;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it could be used by other mods, using pub would be better.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's supposed not to be used by other module.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In v1's code, it's called in components/server as well.

27 changes: 8 additions & 19 deletions components/raftstore-v2/src/operation/query/lease.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,22 @@
use std::sync::{Arc, Mutex};

use engine_traits::{KvEngine, RaftEngine};
use kvproto::{
kvrpcpb::ExtraOp as TxnExtraOp,
raft_cmdpb::{self, RaftCmdRequest, RaftCmdResponse},
use kvproto::raft_cmdpb::RaftCmdRequest;
use raftstore::store::{
can_amend_read, fsm::apply::notify_stale_req, metrics::RAFT_READ_INDEX_PENDING_COUNT,
msg::ReadCallback, propose_read_index, should_renew_lease, util::LeaseState, ReadDelegate,
ReadIndexRequest, ReadProgress, TrackVer, Transport,
};
use raftstore::{
store::{
can_amend_read, cmd_resp,
fsm::{apply::notify_stale_req, Proposal},
metrics::RAFT_READ_INDEX_PENDING_COUNT,
msg::{ErrorCallback, ReadCallback},
propose_read_index, should_renew_lease,
util::{check_region_epoch, LeaseState},
ReadDelegate, ReadIndexRequest, ReadProgress, TrackVer, Transport,
},
Error,
};
use slog::{debug, error, info, o, Logger};
use tikv_util::{box_err, time::monotonic_raw_now, Either};
use slog::debug;
use tikv_util::time::monotonic_raw_now;
use time::Timespec;
use tracker::GLOBAL_TRACKERS;

use crate::{
batch::StoreContext,
fsm::StoreMeta,
raft::Peer,
router::{CmdResChannel, QueryResChannel, QueryResult, ReadResponse},
Result,
router::{QueryResChannel, QueryResult, ReadResponse},
};

impl<EK: KvEngine, ER: RaftEngine> Peer<EK, ER> {
Expand Down