April 5, 2023
- Background
- Robustness test
- Two critical data inconsistency issues
- Decouple raft from etcd
- Separate http and gRPC servers
- Added one more role "Member"
This post briefly summarizes the big changes in etcd community in 2023 Q1. Some items were actually completed late last year.
The robustness test is introduced to verify correctness and consistency of data. Previously we had a functional test, but it's over designed and wasn't well maintained. It's also flaky. So we replaced the functional test with the new robustness test, and it reuses the existing e2e test framework.
The two critical issues were officially announced here. The first data inconsistency issue may happen when etcd crashes during processing defragmentation operation. When the etcd instance starts again, it might reapply some entries which have already been applied. Accordingly it might result in the member's data becoming inconsistent with the other members.
The second issue is for a case when auth is enabled and a new member added to the cluster. The new added member might fail to appy due to permission denied, and eventually become data inconsistent with other members.
Previously raft is a module included in the etcd repository. But raft is a standalone protocol to maintain a replicated state machine,
and is also widely used outside etcd; it may have different evolution pace. So we moved raft into a separate repository etcd-io/raft
under the etcd-io organization, and renamed the module name to go.etcd.io/raft/v3
. Please get more detailed info in issues/14713.
Previously clients access both the gRPC and http services using the same port, e.g. 2379. Now users can configure a separate endpoint/port to serve only http requests. The reason for this change is when a etcd client is generating high read response load, it can result in watch response stream in the same connection being starved. Please get more detailed info in ssues/15402.
Previously there were only two roles in etcd community, which are reviewer and maintainer. But there is a high bar to be a reviewer, let alone to be a maintainer. So we decided to add one more role to show early appreciation to active contributors.
Please refer to pull/15593.