You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by ly...@apache.org on 2024/06/25 12:22:00 UTC
(incubator-devlake) 01/01: fix(migrator): save migration script before running it
This is an automated email from the ASF dual-hosted git repository.
lynwee pushed a commit to branch dev0625-1
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
commit 94f0cfbf7660bf56c4a4155aae53c037f20386d0
Author: d4x1 <15...@qq.com>
AuthorDate: Tue Jun 25 20:21:51 2024 +0800
fix(migrator): save migration script before running it
---
backend/core/migration/migrator.go | 20 +++++++++++++++-----
backend/server/services/init.go | 2 +-
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/backend/core/migration/migrator.go b/backend/core/migration/migrator.go
index d60c9b8f9..14dce1f2d 100644
--- a/backend/core/migration/migrator.go
+++ b/backend/core/migration/migrator.go
@@ -97,18 +97,28 @@ func (m *migratorImpl) Execute() errors.Error {
for _, swc := range m.pending {
scriptId := getScriptId(swc.script.Name(), swc.script.Version())
m.logger.Info("applying migration script %s", scriptId)
- err := swc.script.Up(m.basicRes)
- if err != nil {
- return err
- }
- err = db.Create(&MigrationHistory{
+ tx := db.Begin()
+ err := db.Create(&MigrationHistory{
ScriptVersion: swc.script.Version(),
ScriptName: swc.script.Name(),
Comment: swc.comment,
})
if err != nil {
+ if err := tx.Rollback(); err != nil {
+ return err
+ }
return errors.Default.Wrap(err, fmt.Sprintf("failed to execute migration script %s", scriptId))
}
+
+ if err := swc.script.Up(m.basicRes); err != nil {
+ if err := tx.Rollback(); err != nil {
+ return err
+ }
+ return err
+ }
+ if err := tx.Commit(); err != nil {
+ return err
+ }
m.executed[scriptId] = true
m.pending = m.pending[1:]
}
diff --git a/backend/server/services/init.go b/backend/server/services/init.go
index e75af65bf..fb32bb8ee 100644
--- a/backend/server/services/init.go
+++ b/backend/server/services/init.go
@@ -96,7 +96,7 @@ func registerPluginsMigrationScripts() {
func InitExecuteMigration() {
// check if there are pending migration
- logger.Info("has pending scripts? %v, FORCE_MIGRATION: %s", migrator.HasPendingScripts(), cfg.GetBool("FORCE_MIGRATION"))
+ logger.Info("has pending scripts? %v, FORCE_MIGRATION: %v", migrator.HasPendingScripts(), cfg.GetBool("FORCE_MIGRATION"))
if migrator.HasPendingScripts() {
if cfg.GetBool("FORCE_MIGRATION") {
errors.Must(ExecuteMigration())