Skip to content

Commit

Permalink
fix: deletion flow for component checks
Browse files Browse the repository at this point in the history
  • Loading branch information
yashmehrotra committed Nov 20, 2023
1 parent cadc6b7 commit 4f5e0ca
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
10 changes: 5 additions & 5 deletions checks/elasticsearch.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,31 +62,31 @@ func (c *ElasticsearchChecker) Check(ctx *context.Context, extConfig external.Ch
}

if res.IsError() {
var e map[string]interface{}
var e map[string]any
if err := json.NewDecoder(res.Body).Decode(&e); err != nil {
return results.ErrorMessage(
fmt.Errorf("Error parsing the response body: %s", err),
)
} else {
return results.ErrorMessage(fmt.Errorf("Error from elasticsearch [%s]: %v, %v",
res.Status(),
e["error"].(map[string]interface{})["type"],
e["error"].(map[string]interface{})["reason"],
e["error"].(map[string]any)["type"],
e["error"].(map[string]any)["reason"],
))
}
}

// We are closing the body after error as the Body object is not set in case of error
// leading to nil pointer errors
defer res.Body.Close()
var r map[string]interface{}
var r map[string]any
if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
return results.ErrorMessage(
fmt.Errorf("Error parsing the response body: %s", err),
)
}

count := int(r["hits"].(map[string]interface{})["total"].(map[string]interface{})["value"].(float64))
count := int(r["hits"].(map[string]any)["total"].(map[string]any)["value"].(float64))

if count != check.Results {
return results.Failf("Query return %d rows, expected %d", count, check.Results)
Expand Down
22 changes: 15 additions & 7 deletions pkg/db/topology.go
Original file line number Diff line number Diff line change
Expand Up @@ -392,18 +392,26 @@ func DeleteComponentChildren(componentID string, deleteTime time.Time) error {
}

func DeleteInlineCanariesForComponent(componentID string, deleteTime time.Time) error {
var canaries = []*pkg.Canary{}
var rows []struct {
ID string
}
source := "component/" + componentID
if err := Gorm.Where("source = ?", source).Find(&canaries).UpdateColumn("deleted_at", deleteTime).Error; err != nil {
if err := Gorm.
Model(&rows).
Table("canaries").
Where("source = ?", source).
Clauses(clause.Returning{Columns: []clause.Column{{Name: "id"}}}).
UpdateColumn("deleted_at", deleteTime).Error; err != nil {
return err
}
for _, c := range canaries {
if _, err := DeleteChecksForCanary(c.ID.String(), deleteTime); err != nil {
logger.Debugf("Error deleting checks for canary %v", c.ID)

for _, r := range rows {
if _, err := DeleteChecksForCanary(r.ID, deleteTime); err != nil {
logger.Debugf("Error deleting checks for canary %v", r.ID)
continue
}
if err := DeleteCheckComponentRelationshipsForCanary(c.ID.String(), deleteTime); err != nil {
logger.Debugf("Error deleting check component relationships for canary %v", c.ID)
if err := DeleteCheckComponentRelationshipsForCanary(r.ID, deleteTime); err != nil {
logger.Debugf("Error deleting check component relationships for canary %v", r.ID)
continue
}
}
Expand Down

0 comments on commit 4f5e0ca

Please sign in to comment.