Skip to content

Commit 6a50a43

Browse files
committed
use database.IsSerializedError
1 parent c42e6a6 commit 6a50a43

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

enterprise/dbcrypt/dbcrypt.go

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import (
55
"database/sql"
66
"encoding/base64"
77

8-
"github.com/lib/pq"
9-
108
"github.com/coder/coder/v2/coderd/database"
119
"github.com/coder/coder/v2/coderd/database/dbauthz"
1210

@@ -336,19 +334,20 @@ func (db *dbCrypt) decryptField(field *string, digest sql.NullString) error {
336334
}
337335

338336
func (db *dbCrypt) ensureEncryptedWithRetry(ctx context.Context) error {
339-
err := db.ensureEncrypted(ctx)
340-
if err == nil {
341-
return nil
342-
}
343-
// If we get a serialization error, then we need to retry.
344-
var pqerr *pq.Error
345-
if !xerrors.As(err, &pqerr) {
346-
return err
347-
}
348-
if pqerr.Code != "40001" { // serialization_failure
349-
return err
337+
var err error
338+
for i := 0; i < 3; i++ {
339+
err = db.ensureEncrypted(ctx)
340+
if err == nil {
341+
return nil
342+
}
343+
// If we get a serialization error, then we need to retry.
344+
if !database.IsSerializedError(err) {
345+
return err
346+
}
347+
// otherwise, retry
350348
}
351-
return db.ensureEncrypted(ctx)
349+
// If we get here, then we ran out of retries
350+
return err
352351
}
353352

354353
func (db *dbCrypt) ensureEncrypted(ctx context.Context) error {

0 commit comments

Comments
 (0)