Skip to content

Commit a4309c4

Browse files
authored
Merge pull request #6602 from devtron-labs/fix-webhook-unreachable-cd-delet
fix: workflow getting incorrectly deleted in case of webhook and unreachable cluster's cd pipeline
2 parents 943d18f + da02302 commit a4309c4

File tree

3 files changed

+14
-27
lines changed

3 files changed

+14
-27
lines changed

internal/sql/repository/appWorkflow/AppWorkflowRepository.go

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ type AppWorkflowRepository interface {
3232
FindByIds(ids []int) (*AppWorkflow, error)
3333
FindByAppId(appId int) (appWorkflow []*AppWorkflow, err error)
3434
FindByAppIds(appIds []int) (appWorkflow []*AppWorkflow, err error)
35-
DeleteAppWorkflow(appWorkflow *AppWorkflow, tx *pg.Tx) error
35+
DeleteAppWorkflowAndAllMappings(appWorkflow *AppWorkflow, tx *pg.Tx) error
3636

3737
SaveAppWorkflowMapping(wf *AppWorkflowMapping, tx *pg.Tx) (*AppWorkflowMapping, error)
3838
FindByWorkflowId(workflowId int) ([]*AppWorkflowMapping, error)
@@ -164,26 +164,21 @@ func (impl AppWorkflowRepositoryImpl) FindByIds(ids []int) (*AppWorkflow, error)
164164
return appWorkflow, err
165165
}
166166

167-
func (impl AppWorkflowRepositoryImpl) DeleteAppWorkflow(appWorkflow *AppWorkflow, tx *pg.Tx) error {
168-
appWorkflowMappings, err := impl.FindWFCIMappingByWorkflowId(appWorkflow.Id)
169-
if err != nil && pg.ErrNoRows != err {
170-
impl.Logger.Errorw("err", err)
171-
return err
172-
}
173-
if len(appWorkflowMappings) > 0 {
174-
for _, item := range appWorkflowMappings {
175-
err = impl.DeleteAppWorkflowMapping(item, tx)
176-
if err != nil {
177-
impl.Logger.Errorw("err", err)
178-
return err
179-
}
167+
func (impl AppWorkflowRepositoryImpl) DeleteAppWorkflowAndAllMappings(appWorkflow *AppWorkflow, tx *pg.Tx) error {
168+
// Delete app workflow mapping
169+
mapping, err := impl.FindWFAllMappingByWorkflowId(appWorkflow.Id)
170+
for _, item := range mapping {
171+
err := impl.DeleteAppWorkflowMapping(item, tx)
172+
if err != nil {
173+
impl.Logger.Errorw("error in deleting workflow mapping", "err", err)
174+
return err
180175
}
181176
}
182177

183178
appWorkflow.Active = false
184-
err = impl.dbConnection.Update(appWorkflow)
179+
err = tx.Update(appWorkflow)
185180
if err != nil {
186-
impl.Logger.Errorw("err", err)
181+
impl.Logger.Errorw("error in deleting app workflow", "appWorkflow", appWorkflow, "err", err)
187182
return err
188183
}
189184
return nil

pkg/appWorkflow/AppWorkflowService.go

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -270,20 +270,11 @@ func (impl AppWorkflowServiceImpl) DeleteAppWorkflow(appWorkflowId int, userId i
270270
defer tx.Rollback()
271271

272272
// Deleting workflow
273-
err = impl.appWorkflowRepository.DeleteAppWorkflow(wf, tx)
273+
err = impl.appWorkflowRepository.DeleteAppWorkflowAndAllMappings(wf, tx)
274274
if err != nil {
275275
impl.Logger.Errorw("err", err)
276276
return err
277277
}
278-
// Delete app workflow mapping
279-
mapping, err := impl.appWorkflowRepository.FindWFAllMappingByWorkflowId(wf.Id)
280-
for _, item := range mapping {
281-
err := impl.appWorkflowRepository.DeleteAppWorkflowMapping(item, tx)
282-
if err != nil {
283-
impl.Logger.Errorw("error in deleting workflow mapping", "err", err)
284-
return err
285-
}
286-
}
287278
err = impl.userAuthService.DeleteRoles(bean3.WorkflowType, app.AppName, tx, "", wf.Name)
288279
if err != nil {
289280
impl.Logger.Errorw("error in deleting auth roles", "err", err)

pkg/pipeline/DeploymentPipelineConfigService.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1337,7 +1337,8 @@ func (impl *CdPipelineConfigServiceImpl) DeleteCdPipeline(pipeline *pipelineConf
13371337
impl.logger.Errorw("error in deleting workflow mapping", "err", err)
13381338
return deleteResponse, err
13391339
}
1340-
err = impl.appWorkflowRepository.DeleteAppWorkflow(appWorkflow, tx)
1340+
//delete app workflow and all it's mappings
1341+
err = impl.appWorkflowRepository.DeleteAppWorkflowAndAllMappings(appWorkflow, tx)
13411342
if err != nil {
13421343
impl.logger.Errorw("error in deleting workflow mapping", "err", err)
13431344
return deleteResponse, err

0 commit comments

Comments
 (0)