Skip to content

Commit 6f945ec

Browse files
authored
fix(host): move GetWrapper call out of transaction (#6071)
1 parent 1a6a0b9 commit 6f945ec

File tree

1 file changed

+11
-18
lines changed

1 file changed

+11
-18
lines changed

internal/host/plugin/repository_host_catalog.go

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,12 @@ func (r *Repository) CreateCatalog(ctx context.Context, c *HostCatalog, _ ...Opt
111111
return nil, nil, errors.Wrap(ctx, err, op)
112112
}
113113

114+
databaseWrapper, err := r.kms.GetWrapper(ctx, c.ProjectId, kms.KeyPurposeDatabase)
115+
if err != nil {
116+
return nil, nil, errors.Wrap(ctx, err, op, errors.WithMsg("unable to get database wrapper"))
117+
}
114118
// If secrets were passed in, HMAC 'em
115119
if c.Secrets != nil && len(c.Secrets.GetFields()) > 0 {
116-
databaseWrapper, err := r.kms.GetWrapper(ctx, c.ProjectId, kms.KeyPurposeDatabase)
117-
if err != nil {
118-
return nil, nil, errors.Wrap(ctx, err, op, errors.WithMsg("unable to get database wrapper"))
119-
}
120120
if err := c.hmacSecrets(ctx, databaseWrapper); err != nil {
121121
return nil, nil, errors.Wrap(ctx, err, op, errors.WithMsg("error hmac'ing passed-in secrets"))
122122
}
@@ -188,11 +188,7 @@ func (r *Repository) CreateCatalog(ctx context.Context, c *HostCatalog, _ ...Opt
188188
if err != nil {
189189
return errors.Wrap(ctx, err, op)
190190
}
191-
dbWrapper, err := r.kms.GetWrapper(ctx, c.ProjectId, kms.KeyPurposeDatabase)
192-
if err != nil {
193-
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to get db wrapper"))
194-
}
195-
if err := hcSecret.encrypt(ctx, dbWrapper); err != nil {
191+
if err := hcSecret.encrypt(ctx, databaseWrapper); err != nil {
196192
return errors.Wrap(ctx, err, op)
197193
}
198194
if hcSecret != nil {
@@ -280,6 +276,11 @@ func (r *Repository) UpdateCatalog(ctx context.Context, c *HostCatalog, version
280276
return nil, nil, db.NoRowsAffected, errors.New(ctx, errors.VersionMismatch, op, fmt.Sprintf("catalog version mismatch, want=%d, got=%d", currentCatalog.GetVersion(), version))
281277
}
282278

279+
databaseWrapper, err := r.kms.GetWrapper(ctx, c.ProjectId, kms.KeyPurposeDatabase)
280+
if err != nil {
281+
return nil, nil, db.NoRowsAffected, errors.Wrap(ctx, err, op, errors.WithMsg("unable to get database wrapper"))
282+
}
283+
283284
// Clone the catalog so that we can set fields.
284285
newCatalog := currentCatalog.clone()
285286
var updateAttributes bool
@@ -318,10 +319,6 @@ func (r *Repository) UpdateCatalog(ctx context.Context, c *HostCatalog, version
318319
nullFields = append(nullFields, "SecretsHmac")
319320
default:
320321
// If secrets were passed in, HMAC 'em
321-
databaseWrapper, err := r.kms.GetWrapper(ctx, c.ProjectId, kms.KeyPurposeDatabase)
322-
if err != nil {
323-
return nil, nil, db.NoRowsAffected, errors.Wrap(ctx, err, op, errors.WithMsg("unable to get database wrapper"))
324-
}
325322
if err := newCatalog.hmacSecrets(ctx, databaseWrapper); err != nil {
326323
return nil, nil, db.NoRowsAffected, errors.Wrap(ctx, err, op, errors.WithMsg("error hmac'ing passed-in secrets"))
327324
}
@@ -386,10 +383,6 @@ func (r *Repository) UpdateCatalog(ctx context.Context, c *HostCatalog, version
386383
}
387384
}
388385

389-
dbWrapper, err := r.kms.GetWrapper(ctx, newCatalog.ProjectId, kms.KeyPurposeDatabase)
390-
if err != nil {
391-
return nil, nil, db.NoRowsAffected, errors.Wrap(ctx, err, op, errors.WithMsg("unable to get db wrapper"))
392-
}
393386
// Get the oplog.
394387
oplogWrapper, err := r.kms.GetWrapper(ctx, newCatalog.ProjectId, kms.KeyPurposeOplog)
395388
if err != nil {
@@ -479,7 +472,7 @@ func (r *Repository) UpdateCatalog(ctx context.Context, c *HostCatalog, version
479472
if err != nil {
480473
return errors.Wrap(ctx, err, op)
481474
}
482-
if err := hcSecret.encrypt(ctx, dbWrapper); err != nil {
475+
if err := hcSecret.encrypt(ctx, databaseWrapper); err != nil {
483476
return errors.Wrap(ctx, err, op)
484477
}
485478

0 commit comments

Comments
 (0)