From 6be61e6c9aa7b8fc32b5479d876706135bea67fe Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Tue, 13 Jun 2023 11:50:11 +0200 Subject: [PATCH] logs table migration: skip on corrupted json and fail later (#1856) enhance #1828 --- .../datastore/migration/019_alter_logs_table.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/server/store/datastore/migration/019_alter_logs_table.go b/server/store/datastore/migration/019_alter_logs_table.go index 528937923..517ef3267 100644 --- a/server/store/datastore/migration/019_alter_logs_table.go +++ b/server/store/datastore/migration/019_alter_logs_table.go @@ -97,9 +97,13 @@ var migrateLogs2LogEntries = task{ return err } + hasJSONErrors := false + page := 0 + offset := 0 logs := make([]*oldLogs019, 0, perPage019) logEntries := make([]*oldLogEntry019, 0, 50) + sigterm := abool.New() ctx, cancelCtx := context.WithCancelCause(context.Background()) defer cancelCtx(nil) @@ -120,7 +124,7 @@ var migrateLogs2LogEntries = task{ } logs = logs[:0] - err := sess.Limit(perPage019).Find(&logs) + err := sess.Limit(perPage019, offset).Find(&logs) if err != nil { return err } @@ -130,7 +134,9 @@ var migrateLogs2LogEntries = task{ for _, l := range logs { logEntries = logEntries[:0] if err := json.Unmarshal(l.Data, &logEntries); err != nil { - return err + hasJSONErrors = true + offset++ + continue } time := int64(0) @@ -170,6 +176,10 @@ var migrateLogs2LogEntries = task{ page++ } + if hasJSONErrors { + return fmt.Errorf("skipped some logs as json could not be deserialized for them") + } + return e.DropTables("logs") }, }