Comments (4)
👋 Thanks for opening this issue!
Get help or engage by:
/help
: to print help messages./assignme
: to assign this issue to you.
from openraft.
Is there a test to reproduce this issue?
I noticed it too days before and haven't yet got time to fully dig into it...
- first found in datafuselabs/databend#3474
from openraft.
the pr has been merged into openraft,but seens that has_more_log
and tokio::select
has the same effect.
from openraft.
the pr has been merged into openraft,but seens that
has_more_log
andtokio::select
has the same effect.
Hmm... not exactly. I was wrong about it last time we discuss it:
- line-14 is required to forward every log even when there is no incoming event about new logs.
- line-13 is required to shut the replication down at once even when there are still a lot of logs that need to be sent.
1 pub async fn line_rate_loop(&mut self) -> Result<(), ReplicationError> {
2 loop {
3 loop {
4 let res = self.send_append_entries().await;
5
6 if let Err(err) = res {...}
7
8 if self.matched.index == self.max_possible_matched_index {
9 break;
10 }
11 }
12
13 self.try_drain_raft_rx().await?;
14 if self.has_more_log() {
15 continue;
16 }
17
18 tokio::select! {
19 _ = self.heartbeat.tick() => { continue }
20
21 event_span = self.repl_rx.recv() => {
22 match event_span {
23 Some((event, _span)) => {
24 self.process_raft_event(event)?;
25 self.try_drain_raft_rx().await?;
26 },
27 None => {
28 return Err(ReplicationError::Closed);
29 },
30 }
31 }
32 }
33 }
34 }
from openraft.
Related Issues (20)
- Feature: Monoio Runtime HOT 3
- Add sync primitives to `AsyncRuntime` trait HOT 1
- Add `AsyncRuntime::oneshot` HOT 2
- Propose stream-based Replication of Log Entries HOT 2
- Dynamic Cluster Membership HOT 5
- Release 0.9 HOT 2
- Killing the leader of a cluster generates excessive network attempts for replicating log entries HOT 4
- RFC: Client request pipelining HOT 9
- main branch cannot compile, please update dependency rocksdb version HOT 2
- move trait method: from `RaftLogStorage` to `RaftLogReader::read_vote()` HOT 2
- Implement TryAsRef<ForwardToLeader<..>> for RaftError HOT 3
- When quitting, RaftCore outputs unexpected ERROR log HOT 1
- Proposal: Remove `RaftLogReader` Trait Dependency from `RaftLogStorage` HOT 2
- Move examples into the workspace HOT 1
- Install Snapshot v1 api HOT 3
- Observe state changes in a Raft node HOT 6
- Split metrics into data metrics and server metrics HOT 5
- About automatic remove HOT 3
- Backing up the WAL HOT 6
- Raft Core Panicking HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from openraft.