mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-03-06 12:01:07 +00:00
Print ongoing alive sign for migrations after 20s (#1846)
This commit is contained in:
parent
7bae68758f
commit
b5b3b95721
1 changed files with 22 additions and 0 deletions
|
@ -15,9 +15,11 @@
|
||||||
package migration
|
package migration
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
|
@ -158,7 +160,9 @@ func runTasks(e *xorm.Engine, tasks []*task) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if task.fn != nil {
|
if task.fn != nil {
|
||||||
|
aliveMsgCancel := showBeAliveSign(task.name)
|
||||||
if err := task.fn(sess); err != nil {
|
if err := task.fn(sess); err != nil {
|
||||||
|
aliveMsgCancel(nil)
|
||||||
if err2 := sess.Rollback(); err2 != nil {
|
if err2 := sess.Rollback(); err2 != nil {
|
||||||
err = errors.Join(err, err2)
|
err = errors.Join(err, err2)
|
||||||
}
|
}
|
||||||
|
@ -169,6 +173,7 @@ func runTasks(e *xorm.Engine, tasks []*task) error {
|
||||||
log.Error().Err(err).Msgf("migration task '%s' failed but is not required", task.name)
|
log.Error().Err(err).Msgf("migration task '%s' failed but is not required", task.name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
aliveMsgCancel(nil)
|
||||||
log.Debug().Msgf("migration task '%s' done", task.name)
|
log.Debug().Msgf("migration task '%s' done", task.name)
|
||||||
} else {
|
} else {
|
||||||
log.Trace().Msgf("skip migration task '%s'", task.name)
|
log.Trace().Msgf("skip migration task '%s'", task.name)
|
||||||
|
@ -198,3 +203,20 @@ func syncAll(sess syncEngine) error {
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var showBeAliveSignDelay = time.Second * 20
|
||||||
|
|
||||||
|
func showBeAliveSign(taskName string) context.CancelCauseFunc {
|
||||||
|
ctx, cancel := context.WithCancelCause(context.Background())
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return
|
||||||
|
case <-time.After(showBeAliveSignDelay):
|
||||||
|
log.Info().Msgf("Migration '%s' is still running, please be patient", taskName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return cancel
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue