Repository metrics
- Stars
- (51,701 stars)
- PR merge metrics
- (平均マージ 6d 3h) (30d で 71 merged PRs)
説明
[The content of this post is being edited, and is not yet approved plan of record ]
Background
In 3.4 storeV2 is still extensively used:
-
User can opt in
--enable-v2to unable V2 API that writes solely data to storeV2 files. -
Membership information is both stored in V2 & V3 (backend) stores
-
Membership information is being read (recovered) from storeV2
-
Publishing membership happens through StoreV2 raft operation.
- The new ClusterMemberAttrSet applier was implemented in etcd 3.5 so cannot be used by default in 3.5: to allow 3.4->3.5 rollback.
-
During startup etcd assumes each WAL log snapshot is accompanied by storev2 snapshot.
-
Note:
etcdctl snapshot restoreis not restoring V2 content (producing fake storeV2 with membership information)
Plan:
3.5 release (updated by ahrtr )
Both V2 and V3 state are supported, but V3 becomes the source of truth. TODO:
- --experimental-enable-v2v3= promoted to
--enable-v2v3=...or deprecated. [see https://github.com/etcd-io/etcd/issues/12905] - --enable-v2v3=... should allow mounting as root ?
- --enable-v2 prints deprecation warning [optional: when not combined with
--enable-v2v3=...] - ClusterMemberAttrSet is implemented.
- Membership is only read from backend v2 (https://github.com/etcd-io/etcd/pull/12914)
- --experimental-no-v2=PHASE_1_WRITE_ONLY mode that:
- cannot be used when
--enable-v2is ON - if the storev2 snapshot is found accompanying the (used to be used) WAL log snapshot, its validated whether it has no used-data (apart of membership & version)
- storev2 is content created on demand using 'etcdctl snapshot restore' logic based on the last WAL snapshot
- cannot be used when
- https://github.com/etcd-io/etcd/issues/18993
- https://github.com/etcd-io/etcd/pull/18999
3.6 release (updated by serathius@, ahrtr )
V3 is the only meaningful state. V2 state is generated from V3 state to maintained backward compability. TODO:
-
--enable-v2is docomissioned - PublishV3 is used solely
- Remove v2 commands from etcdctl (https://github.com/etcd-io/etcd/pull/13643)
- Remove v2 client library (https://github.com/etcd-io/etcd/pull/15591)
- Discovery v3 is implemented https://github.com/etcd-io/etcd/issues/13624
- experimental-no PHASE_1_WRITE_ONLY becomes the default.
- Discovery v2 is deprecated
- Tests for backward v2 compatibility are implemented https://github.com/etcd-io/etcd/pull/13756
- V2 snapshots are generated from V3 data
- V2 apply code is removed
-
V2 no longer stores membership data - Cleanup V2 code to leave only code for generating snapshots.
- Decide on https://github.com/etcd-io/etcd/issues/17009 and implement --v2-deprecation=write-only-drop-data
- https://github.com/etcd-io/etcd/issues/18994
- https://github.com/etcd-io/etcd/issues/18995
- The document will be covered in https://github.com/etcd-io/website/issues/926
3.7 release (updated by serathius@, ahrtr )
- V2 code is totally removed. TODO:
- Discovery v2 is removed
- client v2 is removed
- All V2 store code is removed
- Only load data (i.e. members) from v3store (bbolt)
- Validate membership applying using v3store
- Do not generate v2 snapshot files at all
- Bootstrap etcdserver from v3store(bbolt) instead of v2 snapshot: https://github.com/etcd-io/etcd/issues/20187
- Change the default value for
--v2-deprecationto V2Depr1WriteOnlyDrop - rewrite
TestV2DeprecationWriteOnlyWALandTestV2DeprecationWriteOnlySnapshot, refer to https://github.com/etcd-io/etcd/pull/19961
3.8 release
Remove --v2-deprecation. Completely cleanup anything related to v2store.