@@ -690,6 +690,10 @@ func PurgeWorkflowRun(db gorp.SqlExecutor, wf sdk.Workflow) error {
690690 idsToUpdate = idsToUpdate [:100 ]
691691 }
692692
693+ if len (idsToUpdate ) == 0 {
694+ return nil
695+ }
696+
693697 queryUpdate := `UPDATE workflow_run SET to_delete = true WHERE workflow_run.id = ANY(string_to_array($1, ',')::bigint[])`
694698 if _ , err := db .Exec (queryUpdate , strings .Join (idsToUpdate , "," )); err != nil {
695699 log .Warning ("PurgeWorkflowRun> Unable to update workflow run for purge for workflow id %d and history length %d : %s" , wf .ID , wf .HistoryLength , err )
@@ -769,6 +773,10 @@ func stopRunsBlocked(db *gorp.DbMap) error {
769773 return sdk .WrapError (err , "stopRunsBlocked>" )
770774 }
771775
776+ if len (ids ) == 0 {
777+ return nil
778+ }
779+
772780 tx , errTx := db .Begin ()
773781 if errTx != nil {
774782 return sdk .WrapError (errTx , "stopRunsBlocked>" )
@@ -780,26 +788,34 @@ func stopRunsBlocked(db *gorp.DbMap) error {
780788 wfIds [i ] = fmt .Sprintf ("%d" , ids [i ].ID )
781789 }
782790 wfIdsJoined := strings .Join (wfIds , "," )
783- queryUpdateWf := `UPDATE workflow_run SET status = $1 WHERE id = ANY(string_to_array($2, ',')::bigint[])`
784- if _ , err := tx .Exec (queryUpdateWf , sdk .StatusStopped .String (), wfIdsJoined ); err != nil {
785- return sdk .WrapError (err , "stopRunsBlocked> Unable to stop workflow run history" )
786- }
787791 args := []interface {}{sdk .StatusStopped .String (), wfIdsJoined , sdk .StatusBuilding .String (), sdk .StatusChecking .String (), sdk .StatusWaiting .String ()}
792+ queryUpdateNodeJobRun := `DELETE FROM workflow_node_run_job
793+ WHERE (workflow_node_run_job.workflow_node_run_id IN (
794+ SELECT workflow_node_run.id
795+ FROM workflow_node_run
796+ WHERE (
797+ workflow_node_run.workflow_run_id = ANY(string_to_array($2, ',')::bigint[])
798+ AND (status = $3 OR status = $4 OR status = $5)
799+ )
800+ OR
801+ (workflow_node_run.status = $6 OR workflow_node_run.status = $1 OR workflow_node_run.status = $7)
802+ )
803+ )`
804+ argsNodeJobRun := append (args , sdk .StatusFail .String (), sdk .StatusSuccess .String ())
805+ if _ , err := tx .Exec (queryUpdateNodeJobRun , argsNodeJobRun ... ); err != nil {
806+ return sdk .WrapError (err , "stopRunsBlocked> Unable to stop workflow node job run history" )
807+ }
808+
788809 queryUpdateNodeRun := `UPDATE workflow_node_run SET status = $1, done = now()
789810 WHERE workflow_run_id = ANY(string_to_array($2, ',')::bigint[])
790811 AND (status = $3 OR status = $4 OR status = $5)`
791812 if _ , err := tx .Exec (queryUpdateNodeRun , args ... ); err != nil {
792813 return sdk .WrapError (err , "stopRunsBlocked> Unable to stop workflow node run history" )
793814 }
794- queryUpdateNodeJobRun := `UPDATE workflow_node_run_job SET status = $1, done = now()
795- WHERE workflow_node_run_job.workflow_node_run_id IN (
796- SELECT workflow_node_run.id
797- FROM workflow_node_run
798- WHERE workflow_node_run.workflow_run_id = ANY(string_to_array($2, ',')::bigint[])
799- AND (status = $3 OR status = $4 OR status = $5)
800- )`
801- if _ , err := tx .Exec (queryUpdateNodeJobRun , args ... ); err != nil {
802- return sdk .WrapError (err , "stopRunsBlocked> Unable to stop workflow node job run history" )
815+
816+ queryUpdateWf := `UPDATE workflow_run SET status = $1 WHERE id = ANY(string_to_array($2, ',')::bigint[])`
817+ if _ , err := tx .Exec (queryUpdateWf , sdk .StatusStopped .String (), wfIdsJoined ); err != nil {
818+ return sdk .WrapError (err , "stopRunsBlocked> Unable to stop workflow run history" )
803819 }
804820
805821 resp := []struct {
0 commit comments