This is an automated email from the ASF dual-hosted git repository.

abeizn pushed a commit to branch release-v0.21
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/release-v0.21 by this push:
     new f82045dfc fix: empty dora data when run the tasks (#7070) (#7072)
f82045dfc is described below

commit f82045dfc2119110719954987368cbd7372feb60
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Feb 29 21:41:57 2024 +0800

    fix: empty dora data when run the tasks (#7070) (#7072)
    
    * fix: empty dora data when run the tasks
    
    Co-authored-by: abeizn <[email protected]>
---
 .../dora/tasks/change_lead_time_calculator.go      | 19 +++---------
 .../dora/tasks/deployment_commits_generator.go     | 34 ++++++++++++--------
 backend/plugins/dora/tasks/deployment_generator.go | 36 +++++++++++++---------
 .../dora/tasks/incident_deploy_connector.go        | 19 +++---------
 4 files changed, 53 insertions(+), 55 deletions(-)

diff --git a/backend/plugins/dora/tasks/change_lead_time_calculator.go 
b/backend/plugins/dora/tasks/change_lead_time_calculator.go
index dc5134cbe..8e29f1678 100644
--- a/backend/plugins/dora/tasks/change_lead_time_calculator.go
+++ b/backend/plugins/dora/tasks/change_lead_time_calculator.go
@@ -18,7 +18,6 @@ limitations under the License.
 package tasks
 
 import (
-       "fmt"
        "math"
        "reflect"
        "time"
@@ -47,6 +46,11 @@ func CalculateChangeLeadTime(taskCtx plugin.SubTaskContext) 
errors.Error {
        db := taskCtx.GetDal()
        logger := taskCtx.GetLogger()
        data := taskCtx.GetData().(*DoraTaskData)
+       // Clear previous results from the project
+       err := db.Exec("DELETE FROM project_pr_metrics WHERE project_name = ? 
", data.Options.ProjectName)
+       if err != nil {
+               return errors.Default.Wrap(err, "error deleting previous 
project_pr_metrics")
+       }
 
        // Get pull requests by repo project_name
        var clauses = []dal.Clause{
@@ -60,19 +64,6 @@ func CalculateChangeLeadTime(taskCtx plugin.SubTaskContext) 
errors.Error {
                return err
        }
        defer cursor.Close()
-       count, err := db.Count(clauses...)
-       if err != nil {
-               return errors.Default.Wrap(err, "error getting count of 
clauses")
-       }
-       if count == 0 {
-               // Clear previous results from the project
-               deleteSql := fmt.Sprintf("DELETE FROM project_pr_metrics WHERE 
project_name = '%s'", data.Options.ProjectName)
-               err := db.Exec(deleteSql)
-               if err != nil {
-                       return errors.Default.Wrap(err, "error deleting 
previous project_pr_metrics")
-               }
-               return nil
-       }
 
        converter, err := api.NewDataConverter(api.DataConverterArgs{
                RawDataSubTaskArgs: api.RawDataSubTaskArgs{
diff --git a/backend/plugins/dora/tasks/deployment_commits_generator.go 
b/backend/plugins/dora/tasks/deployment_commits_generator.go
index d960f5785..64133ce06 100644
--- a/backend/plugins/dora/tasks/deployment_commits_generator.go
+++ b/backend/plugins/dora/tasks/deployment_commits_generator.go
@@ -101,30 +101,38 @@ func GenerateDeploymentCommits(taskCtx 
plugin.SubTaskContext) errors.Error {
        }
        if data.Options.ScopeId != nil {
                clauses = append(clauses, dal.Where(`p.cicd_scope_id = ?`, 
data.Options.ScopeId))
+               // Clear previous results from the project
+               deleteSql := `DELETE FROM cicd_deployment_commits WHERE 
cicd_scope_id = ? ;`
+               err := db.Exec(deleteSql, data.Options.ScopeId)
+               if err != nil {
+                       return errors.Default.Wrap(err, "error deleting 
previous cicd_deployment_commits")
+               }
        } else {
                clauses = append(clauses,
                        dal.Join("LEFT JOIN project_mapping pm ON (pm.table = 
'cicd_scopes' AND pm.row_id = p.cicd_scope_id)"),
                        dal.Where(`pm.project_name = ?`, 
data.Options.ProjectName),
                )
+               // Clear previous results from the project
+               deleteSql := `DELETE FROM cicd_deployment_commits
+                       WHERE cicd_scope_id IN (
+                       SELECT cicd_scope_id
+                       FROM (
+                               SELECT cdc.cicd_scope_id
+                               FROM cicd_deployment_commits cdc
+                               LEFT JOIN project_mapping pm ON (pm.table = 
'cicd_scopes' AND pm.row_id = cdc.cicd_scope_id)
+                               WHERE pm.project_name = ?
+                       ) AS subquery
+                       );`
+               err := db.Exec(deleteSql, data.Options.ProjectName)
+               if err != nil {
+                       return errors.Default.Wrap(err, "error deleting 
previous cicd_deployment_commits")
+               }
        }
        cursor, err := db.Cursor(clauses...)
        if err != nil {
                return err
        }
        defer cursor.Close()
-       count, err := db.Count(clauses...)
-       if err != nil {
-               return errors.Default.Wrap(err, "error getting count of 
clauses")
-       }
-       if count == 0 {
-               // Clear previous results from the project
-               deleteSql := fmt.Sprintf("DELETE cdc FROM 
cicd_deployment_commits cdc LEFT JOIN project_mapping pm ON (pm.table = 
'cicd_scopes' AND pm.row_id = cdc.cicd_scope_id) WHERE pm.project_name = '%s'", 
data.Options.ProjectName)
-               err := db.Exec(deleteSql)
-               if err != nil {
-                       return errors.Default.Wrap(err, "error deleting 
previous cicd_deployment_commits")
-               }
-               return nil
-       }
 
        enricher, err := api.NewDataConverter(api.DataConverterArgs{
                RawDataSubTaskArgs: api.RawDataSubTaskArgs{
diff --git a/backend/plugins/dora/tasks/deployment_generator.go 
b/backend/plugins/dora/tasks/deployment_generator.go
index f7caada5e..237b7216c 100644
--- a/backend/plugins/dora/tasks/deployment_generator.go
+++ b/backend/plugins/dora/tasks/deployment_generator.go
@@ -18,7 +18,6 @@ limitations under the License.
 package tasks
 
 import (
-       "fmt"
        "reflect"
        "time"
 
@@ -80,30 +79,39 @@ func GenerateDeployment(taskCtx plugin.SubTaskContext) 
errors.Error {
                clauses = append(clauses,
                        dal.Where("p.cicd_scope_id = ?", data.Options.ScopeId),
                )
+               // Clear previous results from the cicd_scope_id
+               deleteSql := `DELETE FROM cicd_deployments WHERE cicd_scope_id 
= ?;`
+               err := db.Exec(deleteSql, data.Options.ScopeId)
+               if err != nil {
+                       return errors.Default.Wrap(err, "error deleting 
previous deployments")
+               }
        } else {
                clauses = append(clauses,
                        dal.Join("LEFT JOIN project_mapping pm ON (pm.table = 
'cicd_scopes' AND pm.row_id = p.cicd_scope_id)"),
                        dal.Where("pm.project_name = ?", 
data.Options.ProjectName),
                )
+               // Clear previous results from the project
+               deleteSql := `DELETE FROM cicd_deployments
+                               WHERE cicd_scope_id IN (
+                               SELECT cicd_scope_id
+                               FROM (
+                                       SELECT cd.cicd_scope_id
+                                       FROM cicd_deployments cd
+                                       LEFT JOIN project_mapping pm ON 
(pm.table = 'cicd_scopes' AND pm.row_id = cd.cicd_scope_id)
+                                       WHERE pm.project_name = ?
+                               ) AS subquery
+                               );`
+               err := db.Exec(deleteSql, data.Options.ProjectName)
+               if err != nil {
+                       return errors.Default.Wrap(err, "error deleting 
previous deployments")
+               }
        }
+
        cursor, err := db.Cursor(clauses...)
        if err != nil {
                return err
        }
        defer cursor.Close()
-       count, err := db.Count(clauses...)
-       if err != nil {
-               return errors.Default.Wrap(err, "error getting count of 
clauses")
-       }
-       if count == 0 {
-               // Clear previous results from the project
-               deleteSql := fmt.Sprintf("DELETE cd FROM cicd_deployments cd 
LEFT JOIN project_mapping pm ON (pm.table = 'cicd_scopes' AND pm.row_id = 
cd.cicd_scope_id) WHERE pm.project_name = '%s'", data.Options.ProjectName)
-               err := db.Exec(deleteSql)
-               if err != nil {
-                       return errors.Default.Wrap(err, "error deleting 
previous deployments")
-               }
-               return nil
-       }
 
        enricher, err := api.NewDataConverter(api.DataConverterArgs{
                RawDataSubTaskArgs: api.RawDataSubTaskArgs{
diff --git a/backend/plugins/dora/tasks/incident_deploy_connector.go 
b/backend/plugins/dora/tasks/incident_deploy_connector.go
index f2903d03c..6d9a1365d 100644
--- a/backend/plugins/dora/tasks/incident_deploy_connector.go
+++ b/backend/plugins/dora/tasks/incident_deploy_connector.go
@@ -18,7 +18,6 @@ limitations under the License.
 package tasks
 
 import (
-       "fmt"
        "reflect"
        "time"
 
@@ -48,6 +47,11 @@ type simpleCicdDeploymentCommit struct {
 func ConnectIncidentToDeployment(taskCtx plugin.SubTaskContext) errors.Error {
        db := taskCtx.GetDal()
        data := taskCtx.GetData().(*DoraTaskData)
+       // Clear previous results from the project
+       err := db.Exec("DELETE FROM project_issue_metrics WHERE project_name = 
?", data.Options.ProjectName)
+       if err != nil {
+               return errors.Default.Wrap(err, "error deleting previous 
project_issue_metrics")
+       }
        // select all issues belongs to the board
        clauses := []dal.Clause{
                dal.From(`issues i`),
@@ -63,19 +67,6 @@ func ConnectIncidentToDeployment(taskCtx 
plugin.SubTaskContext) errors.Error {
                return err
        }
        defer cursor.Close()
-       count, err := db.Count(clauses...)
-       if err != nil {
-               return errors.Default.Wrap(err, "error getting count of 
clauses")
-       }
-       if count == 0 {
-               // Clear previous results from the project
-               deleteSql := fmt.Sprintf("DELETE FROM project_issue_metrics 
WHERE project_name = '%s'", data.Options.ProjectName)
-               err := db.Exec(deleteSql)
-               if err != nil {
-                       return errors.Default.Wrap(err, "error deleting 
previous project_issue_metrics")
-               }
-               return nil
-       }
 
        enricher, err := api.NewDataConverter(api.DataConverterArgs{
                RawDataSubTaskArgs: api.RawDataSubTaskArgs{

Reply via email to