Merge pull request #19350 from aladesawe/server-wal-version-unexported-return

Migrate WALVersion to fix unexported-return of walVersion
This commit is contained in:
Benjamin Wang 2025-02-10 21:42:13 +00:00 committed by GitHub
commit ad3301099a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 11 additions and 9 deletions

View File

@ -97,7 +97,7 @@ func (o *migrateOptions) Config() (*migrateConfig, error) {
type migrateConfig struct {
lg *zap.Logger
targetVersion *semver.Version
walVersion schema.WALVersion
walVersion wal.Version
dataDir string
force bool
}

View File

@ -22,6 +22,7 @@ import (
"go.etcd.io/etcd/api/v3/version"
"go.etcd.io/etcd/server/v3/storage/backend"
"go.etcd.io/etcd/server/v3/storage/wal"
)
// Validate checks provided backend to confirm that schema used is supported.
@ -47,21 +48,16 @@ func localBinaryVersion() semver.Version {
return semver.Version{Major: v.Major, Minor: v.Minor}
}
type WALVersion interface {
// MinimalEtcdVersion returns minimal etcd version able to interpret WAL log.
MinimalEtcdVersion() *semver.Version
}
// Migrate updates storage schema to provided target version.
// Downgrading requires that provided WAL doesn't contain unsupported entries.
func Migrate(lg *zap.Logger, tx backend.BatchTx, w WALVersion, target semver.Version) error {
func Migrate(lg *zap.Logger, tx backend.BatchTx, w wal.Version, target semver.Version) error {
tx.LockOutsideApply()
defer tx.Unlock()
return UnsafeMigrate(lg, tx, w, target)
}
// UnsafeMigrate is non thread-safe version of Migrate.
func UnsafeMigrate(lg *zap.Logger, tx backend.UnsafeReadWriter, w WALVersion, target semver.Version) error {
func UnsafeMigrate(lg *zap.Logger, tx backend.UnsafeReadWriter, w wal.Version, target semver.Version) error {
current, err := UnsafeDetectSchemaVersion(lg, tx)
if err != nil {
return fmt.Errorf("cannot detect storage schema version: %w", err)

View File

@ -29,9 +29,15 @@ import (
"go.etcd.io/raft/v3/raftpb"
)
// Version defines the wal version interface.
type Version interface {
// MinimalEtcdVersion returns minimal etcd version able to interpret WAL log.
MinimalEtcdVersion() *semver.Version
}
// ReadWALVersion reads remaining entries from opened WAL and returns struct
// that implements schema.WAL interface.
func ReadWALVersion(w *WAL) (*walVersion, error) {
func ReadWALVersion(w *WAL) (Version, error) {
_, _, ents, err := w.ReadAll()
if err != nil {
return nil, err