etcd-io / etcd

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

Explicit client versioning #10246

Open andrewjstone opened 5 years ago

andrewjstone commented 5 years ago

Hi all,

I can't find any precise documentation around compatibility of v3 clients with given versions and v3 servers with given versions.

While it may be possible to take entire Etcd clusters down and replace them at once, doing that with a larger set of clients is somewhat unrealistic.

Are there any backwards or forwards compatibility guarantees across the client API? For example:

It would be great if you could provide some information about how the Etcd team plans for such scenarios and how you attempt to maintain compatibility, if at all. If not, that should be documented as well.

Thanks!

jingyih commented 5 years ago

cc @jpbetz

jhzhu89 commented 5 years ago

Is there any documents about Backwards/Forwards compatibility? I want to upgrade etcd server from v3.3.15 to v3.4.0, do I have to update the client code? Or the old version client still works?

jfbai commented 4 years ago

Is there any update? we have same consideration.

stale[bot] commented 4 years ago

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

andrewjstone commented 4 years ago

Update to please the stalebot. This is still important given Etcd's standing in the ecosystem.

stale[bot] commented 4 years ago

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.

ptabor commented 4 years ago

I think its very important.

API Changes since 3.1.0

I did some reaserch about API changes since v3.1.0 (there seems to be a lot of change since v3.0.0:) (mostly based on git diff v3.1.0 ./etcdserver/etcdserverpb/rpc.proto):

and identified following differences:

All changes were RPC compatible.

Proposal

IMHO etcd client v3.x.y should:

  1. declare being forward compatible with all >=v3.x.0 releases of etcd server

    • This allows us safely update etcd servers ahead of any application.
  2. declare being backward compatible with any >3.1.0+ release of etcd server, with the regards to limited feature set.

    • e.g. MoveLeader was added in 3.3.0, so should be explicitly documented as available since >=3.3.0 in proto and client lib.
    • etcdclient 3.3.0 can be used with >etcd-3.1 server as long as the methods like MoveLeader are not being called.
  3. Explicitly document new features added in consective etcd clients (and public API).

  4. Move etcd client to a separate go module, such that dependency set is minimal when importing.

wenjiaswe commented 4 years ago

cc @xiang90 @jingyih @gyuho

stale[bot] commented 3 years ago

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.

ptabor commented 3 years ago

not-stale

stale[bot] commented 3 years ago

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.

andrewjstone commented 3 years ago

:keep-alive

stale[bot] commented 3 years ago

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.

andrewjstone commented 3 years ago

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.

Can a human please just explicitly say that this documentation is not going to get written or that it's planned for the future? Marking valid issues stale by bot is not productive.

stale[bot] commented 3 years ago

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.

andrewjstone commented 3 years ago

:keep-alive

stale[bot] commented 2 years ago

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.

andrewjstone commented 2 years ago

Holla

stale[bot] commented 2 years ago

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.

andrewjstone commented 2 years ago

bing

stale[bot] commented 2 years ago

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.

andrewjstone commented 2 years ago

X

stale[bot] commented 2 years ago

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.

andrewjstone commented 2 years ago

X