Tobias Grieger
Tobias Grieger
I noticed that `raft-rs` **almost** builds on stable (only the `socket_timeout` feature which is used in a single location requires `nightly`). The tests don't pass, but I think (but haven't...
When a client proposes a command (at the leader) but the leader steps down before the command commits, the client is left waiting. Simply telling the waiting client that its...
Did some light hacking around membership changes today and noticed that `Consensus` grabs the whole `peers` HashMap, including the peer addresses, at startup. One issue with this is that restarting...
This seems easy enough to fix. There's a chance more are missing; I haven't checked.
It would be good to avoid this dependency on `stdcopy` (as it is a dependency to `docker/docker`). cc @tamird & https://github.com/cockroachdb/cockroach/pull/4712
Reincarnation of https://github.com/etcd-io/etcd/issues/10166#issue-368252159. While it's good that raft tries to detect invariant violations (for example follower regressing no an acked log position), more flexibility in how to react these events...
See https://github.com/etcd-io/etcd/pull/14627#discussion_r1021299292. In `becomeLeader`, we call `r.reset()` which resets the uncommitted log size. This means that in theory the uncommitted log size isn't bounded: - 5x replication - peer 1...
There are a few allocations in the hot path, for example https://github.com/etcd-io/raft/blob/228ee703e3ce57db997095ac5bbdd3d9aeb936d2/raft.go#L548 which would be nice to pool. One way we could to this is by introducing something like this:...
We currently validate configuration changes at proposal time https://github.com/etcd-io/raft/blob/4abd9e927c6d5db930dfdb80237ac584449aeec7/raft.go#L1224-L1260 This is not very helpful because it has false positives (refusing a config change that is actually allowed) though at least...
Consider an assertion such as https://github.com/etcd-io/raft/blob/d9907d6ac6baaebc3c9fd4e67acaa4154d2b3cd3/log.go#L324 of which there are various across the codebase. Hitting this panic usually means that a follower has not upheld its durability guarantees. Violating invariants...