sever: v2store deprecation: Fix etcdctl snapshot restore to restore

correct 'backend' (bbolt) context in aspect of membership.

Prior to this change the 'restored' backend used to still contain:
  - old memberid (mvcc deletion used, why the membership is in bolt
bucket, but not mvcc part):
    ```
	mvs := mvcc.NewStore(s.lg, be, lessor, ci, mvcc.StoreConfig{CompactionBatchLimit: math.MaxInt32})
	defer mvs.Close()
	txn := mvs.Write(traceutil.TODO())
	btx := be.BatchTx()
	del := func(k, v []byte) error {
		txn.DeleteRange(k, nil)
		return nil
	}

	// delete stored members from old cluster since using new members
	btx.UnsafeForEach([]byte("members"), del)
    ```
  - didn't get new members added.
This commit is contained in:
Piotr Tabor
2021-03-26 13:01:49 +01:00
parent 06d6f09a8a
commit 768da490ed
5 changed files with 160 additions and 56 deletions

View File

@@ -239,6 +239,8 @@ func saveDB(destDB, srcDB string, idx uint64, v3 bool) {
}
// remove membership information; should be clobbered by --force-new-cluster
// TODO: Consider refactoring to use backend.Backend instead of bolt
// and membership.TrimMembershipFromBackend.
for _, bucket := range []string{"members", "members_removed", "cluster"} {
tx.DeleteBucket([]byte(bucket))
}