Make RetryingDbFunction more lenient so that it always ignores UNIQUE constraint errors, since if a DB.Create returns a UNIQUE error, then the create is not actually necessary

This commit is contained in:
David Dworken 2023-09-13 19:20:15 -07:00
parent f1e2b8ddbf
commit 763c8208f7
No known key found for this signature in database

View File

@ -148,7 +148,7 @@ func buildTableRow(ctx context.Context, columnNames []string, entry data.History
case "Timestamp": case "Timestamp":
row = append(row, entry.StartTime.Local().Format(hctx.GetConf(ctx).TimestampFormat)) row = append(row, entry.StartTime.Local().Format(hctx.GetConf(ctx).TimestampFormat))
case "Runtime": case "Runtime":
if entry.EndTime == time.Unix(0, 0) { if entry.EndTime.UnixMilli() == 0 {
// An EndTime of zero means this is a pre-saved entry that never finished // An EndTime of zero means this is a pre-saved entry that never finished
row = append(row, "N/A") row = append(row, "N/A")
} else { } else {
@ -718,12 +718,8 @@ func RetryingDbFunction(dbFunc func() error) error {
time.Sleep(time.Duration(i*rand.Intn(100)) * time.Millisecond) time.Sleep(time.Duration(i*rand.Intn(100)) * time.Millisecond)
continue continue
} }
if strings.Contains(errMsg, "UNIQUE constraint failed") { if strings.Contains(errMsg, "UNIQUE constraint failed: history_entries.") {
if i == 0 { return nil
return err
} else {
return nil
}
} }
return fmt.Errorf("unrecoverable sqlite error: %w", err) return fmt.Errorf("unrecoverable sqlite error: %w", err)
} }