fix: make db migration script account for unhashed heartbeats [skip ci]

This commit is contained in:
Ferdinand Mütsch
2025-09-05 09:40:11 +02:00
parent b4aa96ae2f
commit 5f25bd7e99

View File

@@ -335,6 +335,7 @@ func main() {
for _, user := range users {
if data, err := heartbeatSource.StreamWithinBatched(time.Time{}, time.Now(), user, InsertBatchSize); err == nil {
for heartbeats := range data {
fixHeartbeatsBatched(heartbeats)
if err := heartbeatTarget.InsertBatch(heartbeats); err != nil {
log.Printf("warning: failed to insert batch of heartbeats for user (%s)\n", user.ID, err)
continue
@@ -433,6 +434,16 @@ func createSchema() error {
return nil
}
func fixHeartbeatsBatched(heartbeats []*models.Heartbeat) {
// normally, there shouldn't be any heartbeats without a hash,
// however, we observed this case in production, so make sure to fix them to prevent data loss
for _, h := range heartbeats {
if h.Hash == "" {
h.Hashed()
}
}
}
func mustConfigPath() string {
if _, err := os.Stat(*cFlag); err != nil {
log.Fatalln("failed to find config file at", *cFlag)