etcd-io / etcd

Distributed reliable key-value store for the most critical data of a distributed system
https://etcd.io
Apache License 2.0
46.81k stars 9.65k forks source link

Test if watch is sequential #18141

Open serathius opened 1 month ago

serathius commented 1 month ago

What would you like to be added?

I don't think watch is linearizable (doesn't touch read index), but it should be at least sequential. https://jepsen.io/consistency/models/sequential

Explanation of the naming difference between sequential and serializable: https://github.com/etcd-io/etcd/pull/17918#discussion_r1593799944

I think we should test:

Those are ideas, don't know if everyone can be easily validated

Why is this needed?

More robustness

ah8ad3 commented 3 weeks ago

This is interesting to me, i would like to take it, but i'm a bit busy this week if it is still open until next week i'll work on it.

serathius commented 3 weeks ago

Node, sequential is not a global, but a per process property where in etcd process is a etcd server. To validate it we need to be able to identify which server served the request. One option would be to persist MemberId from ResponseHeader in client reports.

ah8ad3 commented 2 weeks ago

/assign I read a lot about difference between sequential and linearization, it's still a bit confusing but more cleaner to me, i will try to see examples and try to implement this. Just in case i assign myself to show i'm working on it. But if anyone have a ready solution feel free to assign yourself and close PR.