swh:1:snp:272e298efac7922bc58929ef447c6a9add2959f8
Revision 7eb696dfcdd05c1762d24528bde58ab3b73d77a7 authored by Benjamin Wang on 30 August 2022, 02:24:51 UTC, committed by Marek Siarkowicz on 05 September 2022, 12:26:24 UTC
For a cluster with only one member, the raft always send identical unstable entries and committed entries to etcdserver, and etcd responds to the client once it finishes (actually partially) the applying workflow. When the client receives the response, it doesn't mean etcd has already successfully saved the data, including BoltDB and WAL, because: 1. etcd commits the boltDB transaction periodically instead of on each request; 2. etcd saves WAL entries in parallel with applying the committed entries. Accordingly, it may run into a situation of data loss when the etcd crashes immediately after responding to the client and before the boltDB and WAL successfully save the data to disk. Note that this issue can only happen for clusters with only one member. For clusters with multiple members, it isn't an issue, because etcd will not commit & apply the data before it being replicated to majority members. When the client receives the response, it means the data must have been applied. It further means the data must have been committed. Note: for clusters with multiple members, the raft will never send identical unstable entries and committed entries to etcdserver. Signed-off-by: Benjamin Wang <wachao@vmware.com>
1 parent fbb14f9
Tip revision: 94077fc7caec762b5ba23cc41c558bc175f3cded authored by James Blair on 25 July 2024, 06:16:42 UTC
Merge pull request #18361 from ArkaSaha30/deps_mgmt_22_7_24
Merge pull request #18361 from ArkaSaha30/deps_mgmt_22_7_24
Tip revision: 94077fc
File | Mode | Size |
---|---|---|
.github | ||
Documentation | ||
api | ||
client | ||
contrib | ||
etcdctl | ||
etcdutl | ||
hack | ||
logos | ||
pkg | ||
raft | ||
scripts | ||
security | ||
server | ||
tests | ||
tools | ||
.gitignore | -rw-r--r-- | 290 bytes |
.header | -rw-r--r-- | 593 bytes |
.travis.yml | -rw-r--r-- | 1.1 KB |
.words | -rw-r--r-- | 1.3 KB |
CONTRIBUTING.md | -rw-r--r-- | 3.3 KB |
DCO | -rw-r--r-- | 1.4 KB |
Dockerfile-release.amd64 | -rw-r--r-- | 726 bytes |
Dockerfile-release.arm64 | -rw-r--r-- | 364 bytes |
Dockerfile-release.ppc64le | -rw-r--r-- | 334 bytes |
Dockerfile-release.s390x | -rw-r--r-- | 330 bytes |
GOVERNANCE.md | -rw-r--r-- | 3.7 KB |
LICENSE | -rw-r--r-- | 11.1 KB |
MAINTAINERS | -rw-r--r-- | 1.0 KB |
Makefile | -rw-r--r-- | 18.1 KB |
Procfile | -rw-r--r-- | 1.6 KB |
Procfile.learner | -rw-r--r-- | 900 bytes |
Procfile.v2 | -rw-r--r-- | 1.6 KB |
README.md | -rw-r--r-- | 9.2 KB |
ROADMAP.md | -rw-r--r-- | 900 bytes |
bill-of-materials.json | -rw-r--r-- | 12.0 KB |
bill-of-materials.override.json | -rw-r--r-- | 254 bytes |
build | -rwxr-xr-x | 117 bytes |
build.bat | -rwxr-xr-x | 51 bytes |
build.ps1 | -rw-r--r-- | 2.7 KB |
build.sh | -rwxr-xr-x | 3.8 KB |
code-of-conduct.md | -rw-r--r-- | 143 bytes |
codecov.yml | -rw-r--r-- | 482 bytes |
dummy.go | -rw-r--r-- | 1.0 KB |
etcd.conf.yml.sample | -rw-r--r-- | 3.6 KB |
go.mod | -rw-r--r-- | 1.0 KB |
go.sum | -rw-r--r-- | 54.8 KB |
test | -rwxr-xr-x | 115 bytes |
test.sh | -rwxr-xr-x | 22.1 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...