From d99dd518fadf17414e1aec73e533a64695eb0853 Mon Sep 17 00:00:00 2001 From: Diogo Nogueira Date: Fri, 29 Nov 2024 13:59:29 +0000 Subject: [PATCH] fix(cd-service): removed revision parsing from transaction. (#2149) The cd-service was parsing the git revision inside a transaction. This meant that if the operation failed we had opened a connection to the database for no reason. This PR moves this operation outside of the transaction. Ref: SRX-0F9ZN3 --- services/cd-service/pkg/service/version.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/services/cd-service/pkg/service/version.go b/services/cd-service/pkg/service/version.go index f0556611c..90533ae73 100644 --- a/services/cd-service/pkg/service/version.go +++ b/services/cd-service/pkg/service/version.go @@ -54,14 +54,14 @@ func (o *VersionServiceServer) GetVersion( state := o.Repository.State() dbHandler := state.DBHandler if dbHandler.ShouldUseOtherTables() { + // The gitRevision field is actually not a proper git revision. + // Instead, it has the release number stored with leading zeroes. + releaseVersion, err := reposerver.FromRevision(in.GitRevision) + if err != nil { + return nil, fmt.Errorf("could not parse GitRevision '%s' for app '%s' in env '%s': %w", + in.GitRevision, in.Application, in.Environment, err) + } res, err := db.WithTransactionT[api.GetVersionResponse](dbHandler, ctx, 1, true, func(ctx context.Context, tx *sql.Tx) (*api.GetVersionResponse, error) { - // The gitRevision field is actually not a proper git revision. - // Instead, it has the release number stored with leading zeroes. - releaseVersion, err := reposerver.FromRevision(in.GitRevision) - if err != nil { - return nil, fmt.Errorf("could not parse GitRevision '%s' for app '%s' in env '%s': %w", - in.GitRevision, in.Application, in.Environment, err) - } deployment, err := dbHandler.DBSelectSpecificDeployment(ctx, tx, in.Environment, in.Application, releaseVersion) if err != nil || deployment == nil { return nil, fmt.Errorf("no deployment found for env='%s' and app='%s': %w", in.Environment, in.Application, err)