etcd-io/etcd

Explicit client versioning

Open

#10246 opened on Nov 8, 2018

View on GitHub
 (28 comments) (6 reactions) (0 assignees)Go (51,701 stars) (10,352 forks)batch import
area/clientv3help wantedstage/tracked

Description

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:

  • Backwards compatibility: Will any new version of a v3 client work with any older v3 version of Etcd? For instance, will existing grpc/protobuf messages only add optional fields, such that old messages are still understood, and those fields can be ignored? Will responses change across minor versions? In essence what guarantees can be provided if any? This allows upgrading clients first and then Etcd.
  • Forwards compatibility: Will any old version of a v3 client work with any new v3 version of Etcd? For instance, will new versions of Etcd be able to interpret old protobuf client messages with missing optional fields correctly? This allows Etcd to be updated first and then clients to be updated individually over time.

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!

Contributor guide