From 85880b2a0ba4d63d0968c54b73c37c9a1b63a44e Mon Sep 17 00:00:00 2001 From: zeripath Date: Thu, 15 Apr 2021 14:29:13 +0100 Subject: [PATCH] Query the DB for the hash before inserting in to email_hash (#15457) (#15491) Backport #15457 Some postgres users have logging which logs even failed transactions. So just query the db before trying to insert. Fix #15451 Signed-off-by: Andrew Thornton art27@cantab.net Co-authored-by: Lunny Xiao Co-authored-by: Lunny Xiao --- models/avatar.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/models/avatar.go b/models/avatar.go index 166ca337ca..ad1e19d0d7 100644 --- a/models/avatar.go +++ b/models/avatar.go @@ -96,6 +96,11 @@ func HashedAvatarLink(email string) string { // we don't care about any DB problem just return the lowerEmail return lowerEmail, nil } + has, err := sess.Where("email = ? AND hash = ?", emailHash.Email, emailHash.Hash).Get(new(EmailHash)) + if has || err != nil { + // Seriously we don't care about any DB problems just return the lowerEmail - we expect the transaction to fail most of the time + return lowerEmail, nil + } _, _ = sess.Insert(emailHash) if err := sess.Commit(); err != nil { // Seriously we don't care about any DB problems just return the lowerEmail - we expect the transaction to fail most of the time