Merge pull request #17791 from ahrtr/verify_revision_bootstrap_20240415

Add verification that the revision shouldn't decrease on bootstrap
This commit is contained in:
Benjamin Wang 2024-04-22 10:43:01 +01:00 committed by GitHub
commit 29529c505b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -25,6 +25,7 @@ import (
"go.uber.org/zap"
"go.etcd.io/etcd/api/v3/mvccpb"
"go.etcd.io/etcd/client/pkg/v3/verify"
"go.etcd.io/etcd/pkg/v3/schedule"
"go.etcd.io/etcd/pkg/v3/traceutil"
"go.etcd.io/etcd/server/v3/lease"
@ -442,8 +443,15 @@ func restoreIntoIndex(lg *zap.Logger, idx index) (chan<- revKeyValue, <-chan int
ok = true
}
}
rev := BytesToRev(rkv.key)
verify.Verify(func() {
if rev.Main < currentRev {
panic(fmt.Errorf("revision %d shouldn't be less than the previous revision %d", rev.Main, currentRev))
}
})
currentRev = rev.Main
if ok {
if isTombstone(rkv.key) {
if err := ki.tombstone(lg, rev.Main, rev.Sub); err != nil {