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{