Skip to content

Commit

Permalink
Merge pull request #890 from traPtitech/fix/setenv-deadlock
Browse files Browse the repository at this point in the history
環境変数設定時にdeadlockするのを修正
  • Loading branch information
pirosiki197 authored Apr 2, 2024
2 parents 62dbba3 + a2082c2 commit 8cf2dfa
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions pkg/infrastructure/repository/environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,18 +50,26 @@ func (r *environmentRepository) SetEnv(ctx context.Context, env *domain.Environm
if err != nil {
return errors.Wrap(err, "failed to start transaction")
}
defer tx.Rollback()

me, err := models.Environments(
models.EnvironmentWhere.ApplicationID.EQ(env.ApplicationID),
models.EnvironmentWhere.Key.EQ(env.Key),
_, err = models.Applications(
qm.Select(models.ApplicationColumns.ID),
models.ApplicationWhere.ID.EQ(env.ApplicationID),
qm.For("UPDATE"),
).One(ctx, tx)
if err != nil {
return errors.Wrap(err, "failed to get application")
}

exists, err := models.Environments(
models.EnvironmentWhere.ApplicationID.EQ(env.ApplicationID),
models.EnvironmentWhere.Key.EQ(env.Key),
).Exists(ctx, tx)
if err != nil && !isNoRowsErr(err) {
return errors.Wrap(err, "failed to get environment")
}
exists := !isNoRowsErr(err)

me = repoconvert.FromDomainEnvironment(env)
me := repoconvert.FromDomainEnvironment(env)

if exists {
_, err = me.Update(ctx, tx, boil.Blacklist())
Expand Down

0 comments on commit 8cf2dfa

Please sign in to comment.