fix(migrator): fix setting version struct fields after migration [EE-4613] (#8090)

* fix setting version struct fields

* fix go tests

* remove versionUpdateRequired

* remove old code that was originally for debugging purposes
pull/8128/head
Matt Hook 2 years ago committed by GitHub
parent d78b762f7b
commit 95bc508462
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -8,7 +8,6 @@ import (
"path" "path"
"strconv" "strconv"
"strings" "strings"
"time"
"github.com/portainer/libhelm" "github.com/portainer/libhelm"
portainer "github.com/portainer/portainer/api" portainer "github.com/portainer/portainer/api"
@ -142,15 +141,6 @@ func initDataStore(flags *portainer.CLIFlags, secretKey []byte, fileService port
go func() { go func() {
<-shutdownCtx.Done() <-shutdownCtx.Done()
defer connection.Close() defer connection.Close()
exportFilename := path.Join(*flags.Data, fmt.Sprintf("export-%d.json", time.Now().Unix()))
err := store.Export(exportFilename)
if err != nil {
log.Error().Str("filename", exportFilename).Err(err).Msg("failed to export")
} else {
log.Debug().Str("filename", exportFilename).Msg("exported")
}
}() }()
return store return store

@ -32,15 +32,13 @@ func (m *Migrator) Migrate() error {
} }
newMigratorCount := 0 newMigratorCount := 0
versionUpdateRequired := false apiVersion := semver.MustParse(portainer.APIVersion)
if schemaVersion.Equal(semver.MustParse(portainer.APIVersion)) { if schemaVersion.Equal(apiVersion) {
// detect and run migrations when the versions are the same. // detect and run migrations when the versions are the same.
// e.g. development builds // e.g. development builds
latestMigrations := m.latestMigrations() latestMigrations := m.latestMigrations()
if latestMigrations.version.Equal(schemaVersion) && if latestMigrations.version.Equal(schemaVersion) &&
version.MigratorCount != len(latestMigrations.migrationFuncs) { version.MigratorCount != len(latestMigrations.migrationFuncs) {
versionUpdateRequired = true
err := runMigrations(latestMigrations.migrationFuncs) err := runMigrations(latestMigrations.migrationFuncs)
if err != nil { if err != nil {
return err return err
@ -51,7 +49,7 @@ func (m *Migrator) Migrate() error {
// regular path when major/minor/patch versions differ // regular path when major/minor/patch versions differ
for _, migration := range m.migrations { for _, migration := range m.migrations {
if schemaVersion.LessThan(migration.version) { if schemaVersion.LessThan(migration.version) {
versionUpdateRequired = true
log.Info().Msgf("migrating data to %s", migration.version.String()) log.Info().Msgf("migrating data to %s", migration.version.String())
err := runMigrations(migration.migrationFuncs) err := runMigrations(migration.migrationFuncs)
if err != nil { if err != nil {
@ -59,27 +57,27 @@ func (m *Migrator) Migrate() error {
} }
} }
newMigratorCount = len(migration.migrationFuncs) if apiVersion.Equal(migration.version) {
newMigratorCount = len(migration.migrationFuncs)
}
} }
} }
if versionUpdateRequired || newMigratorCount != version.MigratorCount { err = m.Always()
err := m.Always() if err != nil {
if err != nil { return migrationError(err, "Always migrations returned error")
return migrationError(err, "Always migrations returned error") }
}
version.SchemaVersion = portainer.APIVersion
version.MigratorCount = newMigratorCount
err = m.versionService.UpdateVersion(version) version.SchemaVersion = portainer.APIVersion
if err != nil { version.MigratorCount = newMigratorCount
return migrationError(err, "StoreDBVersion")
}
log.Info().Msgf("db migrated to %s", portainer.APIVersion) err = m.versionService.UpdateVersion(version)
if err != nil {
return migrationError(err, "StoreDBVersion")
} }
log.Info().Msgf("db migrated to %s", portainer.APIVersion)
return nil return nil
} }

@ -930,6 +930,6 @@
} }
], ],
"version": { "version": {
"VERSION": "{\"SchemaVersion\":\"2.17.0\",\"MigratorCount\":1,\"Edition\":1,\"InstanceID\":\"463d5c47-0ea5-4aca-85b1-405ceefee254\"}" "VERSION": "{\"SchemaVersion\":\"2.17.0\",\"MigratorCount\":0,\"Edition\":1,\"InstanceID\":\"463d5c47-0ea5-4aca-85b1-405ceefee254\"}"
} }
} }
Loading…
Cancel
Save