Run `scripts/genproto.sh --skip-protodoc` and checkout
server/wal/walpb/record.pb.go because we still use go.etcd.io/etcd/raft/v3
instead of go.etcd.io/raft/v3.
Before
```
➜ etcd git:(release-3.5) etcdctl put foo bar
OK
➜ etcd git:(release-3.5) etcdctl get -w json foo
{"header":{"cluster_id":14841639068965178418,"member_id":10276657743932975437,"revision":2,"raft_term":2},"kvs":[{"key":"Zm9v","create_revision":2,"mod_revision":2,"version":1,"value":"YmFy"}],"count":1}
➜ etcd git:(release-3.5) etcdctl compact 2
compacted revision 2
➜ etcd git:(release-3.5) http_proxy= curl -L http://127.0.0.1:2379/v3/maintenance/hashkv -X POST -d '{"revsion":2}'
Not Found
```
After
```bash
➜ etcd git:(bp-16464) http_proxy= curl -L http://127.0.0.1:2379/v3/maintenance/hashkv -X POST -d '{"revsion":2}'
{"header":{"cluster_id":"14841639068965178418","member_id":"10276657743932975437","revision":"2","raft_term":"3"},"hash":3305255506,"compact_revision":"2"}%
```
Signed-off-by: Wei Fu <fuweid89@gmail.com>
While it appears that etcd is not vulnerable to CVE-2021-3121,
it is a good idea to update to the new generator so that new
vulnerable code isn't generated in any future APIs. Also, this
lays the issue to rest of whether there is any issue with
etcd and CVE-2021-3121.
client: Move client specific code (protos, version) to the api/
directory. Thanks to this change /client directory will not need to depend on
the server code. In next commits we make "/api" a module on its own.
Mechanical consequences of execution:
% git mv version/version.go api/version
% git mv etcdserver/api/v3rpc/rpctypes api/v3rpc
% git mv mvcc/mvccpb api/
% git mv etcdserver/etcdserverpb api/
% git mv auth/authpb api/
% git mv etcdserver/api/membership/membershippb api/