diff --git a/management/server/sql_store.go b/management/server/sql_store.go index 25eec7c50..7f09f5dba 100644 --- a/management/server/sql_store.go +++ b/management/server/sql_store.go @@ -1449,17 +1449,21 @@ func (s *SqlStore) SavePolicy(ctx context.Context, lockStrength LockingStrength, } func (s *SqlStore) DeletePolicy(ctx context.Context, lockStrength LockingStrength, accountID, policyID string) error { - result := s.db.Clauses(clause.Locking{Strength: string(lockStrength)}). - Delete(&Policy{}, accountAndIDQueryCondition, accountID, policyID) - if err := result.Error; err != nil { + err := s.db.Transaction(func(tx *gorm.DB) error { + result := tx.Clauses(clause.Locking{Strength: string(lockStrength)}). + Delete(&PolicyRule{}, "policy_id = ?", policyID) + if result.Error != nil { + return result.Error + } + + return tx.Clauses(clause.Locking{Strength: string(lockStrength)}). + Delete(&Policy{}, accountAndIDQueryCondition, accountID, policyID).Error + }) + if err != nil { log.WithContext(ctx).Errorf("failed to delete policy from store: %s", err) return status.Errorf(status.Internal, "failed to delete policy from store") } - if result.RowsAffected == 0 { - return status.NewPolicyNotFoundError(policyID) - } - return nil }