-
Notifications
You must be signed in to change notification settings - Fork 9.8k
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
Etcd should be resiliant to packet manipulation #15704
Comments
The crash is in: Lines 161 to 163 in 85b640c
It seems the Lines 263 to 265 in 85b640c
The surrounding networking problems suggests that the |
But actually entries should never be empty. If they were, this would fail: Line 261 in 85b640c
|
It's the only possible reason based on the implementation. cc @tbg @pavelkalinnikov @nvanbenschoten PTAL, thx |
Or somehow the entries are not continuous. |
Looks puzzling. The A meta-comment. This isn't the first panic in |
Agree that we should consider adding invariant checks, however I would like to us to look holistically at the problem of "etcd being resilient to some packet manipulation", where we also work on defining "some". Protecting in raft is only one level of safeguards we could introduce. The issue reported in etcd cluster with peer mTLS enabled, which means that we cannot even trust TCP checksumming in more extreme situations. |
index out of range [0]
in raft.(*MemoryStorage).Append
What happened?
etcd v3.4.21 crashed when was a follower in 3 nodes cluster, soon after some networking hiccup:
What did you expect to happen?
Reconnect and keep working.
How can we reproduce it (as minimally and precisely as possible)?
I don't have repro. It happened once.
Anything else we need to know?
No response
Etcd version (please run commands below)
v3.4.21
Etcd configuration (command line flags or environment variables)
No response
Etcd debug information (please run commands below, feel free to obfuscate the IP address or FQDN in the output)
No response
Relevant log output
The text was updated successfully, but these errors were encountered: