Skip to content
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

v3 client protocol machine specification #8011

Closed
heyitsanthony opened this issue May 31, 2017 · 3 comments
Closed

v3 client protocol machine specification #8011

heyitsanthony opened this issue May 31, 2017 · 3 comments

Comments

@heyitsanthony
Copy link
Contributor

Specifying the etcd v3 protocol in some proof or specification language (e.g., TLA+) would open more tooling options for making etcd solid. Purposes include: documentation, code synthesis, and verification.

At minimum it should:

  • Represent the rules of updating/accessing etcd v3
  • Be processable by a proof system
  • Cover at least watch and kv semantics

Some example rules (which don't necessarily describe the current protocol nor what it should be):

  • An update between two sequential linearized reads in time should be visible by the second read.
  • The mod revision for a key across two sequential serialized reads should increase if the version increases.
  • A version increases after a put if its create revision does not change
  • A mod revision increases after a put if the create revision is not zero
  • A watch at rev=0 starts at a revision greater than or equal to the last serialized revision in time
  • All puts in a transaction have the same revision once committed
  • All gets in a transaction are from the same point in time, if rev=0

Related: #7597, http://lamport.azurewebsites.net/tla/formal-methods-amazon.pdf

@xiang90
Copy link
Contributor

xiang90 commented Oct 27, 2017

/cc @ericavonb

@gyuho gyuho removed the area/v3api label Feb 25, 2018
@gyuho gyuho self-assigned this May 7, 2018
@ericavonb
Copy link

@dmonay

@stale
Copy link

stale bot commented Apr 7, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 21 days if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Apr 7, 2020
@stale stale bot closed this as completed Apr 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

5 participants
@ericavonb @xiang90 @gyuho @heyitsanthony and others