Signed-off-by: Seongmin Lee git@boltless.me
+1
-4
appview/db/profile.go
+1
-4
appview/db/profile.go
···
108
}
109
110
func UpsertProfile(tx *sql.Tx, profile *models.Profile) error {
111
-
defer tx.Rollback()
112
-
113
// update links
114
_, err := tx.Exec(`delete from profile_links where did = ?`, profile.Did)
115
if err != nil {
···
203
return err
204
}
205
}
206
-
207
-
return tx.Commit()
208
}
209
210
func GetProfiles(e Execer, filters ...orm.Filter) (map[string]*models.Profile, error) {
···
108
}
109
110
func UpsertProfile(tx *sql.Tx, profile *models.Profile) error {
111
// update links
112
_, err := tx.Exec(`delete from profile_links where did = ?`, profile.Did)
113
if err != nil {
···
201
return err
202
}
203
}
204
+
return nil
205
}
206
207
func GetProfiles(e Execer, filters ...orm.Filter) (map[string]*models.Profile, error) {
+6
appview/ingester.go
+6
appview/ingester.go
···
341
if err != nil {
342
return fmt.Errorf("failed to start transaction")
343
}
344
345
err = db.ValidateProfile(tx, &profile)
346
if err != nil {
···
348
}
349
350
err = db.UpsertProfile(tx, &profile)
351
case jmodels.CommitOperationDelete:
352
err = db.DeleteArtifact(i.Db, orm.FilterEq("did", did), orm.FilterEq("rkey", e.Commit.RKey))
353
}
···
341
if err != nil {
342
return fmt.Errorf("failed to start transaction")
343
}
344
+
defer tx.Rollback()
345
346
err = db.ValidateProfile(tx, &profile)
347
if err != nil {
···
349
}
350
351
err = db.UpsertProfile(tx, &profile)
352
+
if err != nil {
353
+
return fmt.Errorf("upserting profile: %w", err)
354
+
}
355
+
356
+
err = tx.Commit()
357
case jmodels.CommitOperationDelete:
358
err = db.DeleteArtifact(i.Db, orm.FilterEq("did", did), orm.FilterEq("rkey", e.Commit.RKey))
359
}
+12
-5
appview/state/profile.go
+12
-5
appview/state/profile.go
···
624
s.pages.Notice(w, "update-profile", "Failed to update profile, try again later.")
625
return
626
}
627
628
client, err := s.oauth.AuthorizedClient(r)
629
if err != nil {
···
672
return
673
}
674
675
-
err = db.UpsertProfile(tx, profile)
676
-
if err != nil {
677
-
log.Println("failed to update profile", err)
678
-
s.pages.Notice(w, "update-profile", "Failed to update profile, try again later.")
679
-
return
680
}
681
682
s.notifier.UpdateProfile(r.Context(), profile)
···
624
s.pages.Notice(w, "update-profile", "Failed to update profile, try again later.")
625
return
626
}
627
+
defer tx.Rollback()
628
+
629
+
err = db.UpsertProfile(tx, profile)
630
+
if err != nil {
631
+
log.Println("failed to update profile", err)
632
+
s.pages.Notice(w, "update-profile", "Failed to update profile, try again later.")
633
+
return
634
+
}
635
636
client, err := s.oauth.AuthorizedClient(r)
637
if err != nil {
···
680
return
681
}
682
683
+
if err := tx.Commit(); err != nil {
684
+
s.logger.Error("failed to commit transaction", "err", err)
685
+
// db failed, but PDS operation succeed.
686
+
// log error and continue
687
}
688
689
s.notifier.UpdateProfile(r.Context(), profile)
Submissions
1 commit
expand
collapse
appview: move tx rollback logic out of
db.UpsertProfile()
Signed-off-by: Seongmin Lee <git@boltless.me>
1/3 timeout, 2/3 success
expand
collapse
no conflicts, ready to merge