Skip to content

Commit 16ff7f6

Browse files
fix: Default reconcile metric result to error for panic safety
1 parent 1be9107 commit 16ff7f6

3 files changed

Lines changed: 53 additions & 55 deletions

File tree

internal/pkg/handler/create.go

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,33 +27,32 @@ func (r ResourceCreatedHandler) GetEnqueueTime() time.Time {
2727
// Handle processes the newly created resource
2828
func (r ResourceCreatedHandler) Handle() error {
2929
startTime := time.Now()
30-
result := "success"
30+
result := "error"
3131

3232
defer func() {
3333
r.Collectors.RecordReconcile(result, time.Since(startTime))
3434
}()
3535

3636
if r.Resource == nil {
3737
logrus.Errorf("Resource creation handler received nil resource")
38-
result = "error"
39-
} else {
40-
config, _ := r.GetConfig()
41-
// Send webhook
42-
if options.WebhookUrl != "" {
43-
err := sendUpgradeWebhook(config, options.WebhookUrl)
44-
if err != nil {
45-
result = "error"
46-
}
47-
return err
48-
}
49-
// process resource based on its type
50-
err := doRollingUpgrade(config, r.Collectors, r.Recorder, invokeReloadStrategy)
51-
if err != nil {
52-
result = "error"
38+
return nil
39+
}
40+
41+
config, _ := r.GetConfig()
42+
// Send webhook
43+
if options.WebhookUrl != "" {
44+
err := sendUpgradeWebhook(config, options.WebhookUrl)
45+
if err == nil {
46+
result = "success"
5347
}
5448
return err
5549
}
56-
return nil
50+
// process resource based on its type
51+
err := doRollingUpgrade(config, r.Collectors, r.Recorder, invokeReloadStrategy)
52+
if err == nil {
53+
result = "success"
54+
}
55+
return err
5756
}
5857

5958
// GetConfig gets configurations containing SHA, annotations, namespace and resource name

internal/pkg/handler/delete.go

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,33 +35,32 @@ func (r ResourceDeleteHandler) GetEnqueueTime() time.Time {
3535
// Handle processes resources being deleted
3636
func (r ResourceDeleteHandler) Handle() error {
3737
startTime := time.Now()
38-
result := "success"
38+
result := "error"
3939

4040
defer func() {
4141
r.Collectors.RecordReconcile(result, time.Since(startTime))
4242
}()
4343

4444
if r.Resource == nil {
4545
logrus.Errorf("Resource delete handler received nil resource")
46-
result = "error"
47-
} else {
48-
config, _ := r.GetConfig()
49-
// Send webhook
50-
if options.WebhookUrl != "" {
51-
err := sendUpgradeWebhook(config, options.WebhookUrl)
52-
if err != nil {
53-
result = "error"
54-
}
55-
return err
56-
}
57-
// process resource based on its type
58-
err := doRollingUpgrade(config, r.Collectors, r.Recorder, invokeDeleteStrategy)
59-
if err != nil {
60-
result = "error"
46+
return nil
47+
}
48+
49+
config, _ := r.GetConfig()
50+
// Send webhook
51+
if options.WebhookUrl != "" {
52+
err := sendUpgradeWebhook(config, options.WebhookUrl)
53+
if err == nil {
54+
result = "success"
6155
}
6256
return err
6357
}
64-
return nil
58+
// process resource based on its type
59+
err := doRollingUpgrade(config, r.Collectors, r.Recorder, invokeDeleteStrategy)
60+
if err == nil {
61+
result = "success"
62+
}
63+
return err
6564
}
6665

6766
// GetConfig gets configurations containing SHA, annotations, namespace and resource name

internal/pkg/handler/update.go

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,38 +30,38 @@ func (r ResourceUpdatedHandler) GetEnqueueTime() time.Time {
3030
// Handle processes the updated resource
3131
func (r ResourceUpdatedHandler) Handle() error {
3232
startTime := time.Now()
33-
result := "success"
33+
result := "error"
3434

3535
defer func() {
3636
r.Collectors.RecordReconcile(result, time.Since(startTime))
3737
}()
3838

3939
if r.Resource == nil || r.OldResource == nil {
4040
logrus.Errorf("Resource update handler received nil resource")
41-
result = "error"
42-
} else {
43-
config, oldSHAData := r.GetConfig()
44-
if config.SHAValue != oldSHAData {
45-
// Send a webhook if update
46-
if options.WebhookUrl != "" {
47-
err := sendUpgradeWebhook(config, options.WebhookUrl)
48-
if err != nil {
49-
result = "error"
50-
}
51-
return err
52-
}
53-
// process resource based on its type
54-
err := doRollingUpgrade(config, r.Collectors, r.Recorder, invokeReloadStrategy)
55-
if err != nil {
56-
result = "error"
41+
return nil
42+
}
43+
44+
config, oldSHAData := r.GetConfig()
45+
if config.SHAValue != oldSHAData {
46+
// Send a webhook if update
47+
if options.WebhookUrl != "" {
48+
err := sendUpgradeWebhook(config, options.WebhookUrl)
49+
if err == nil {
50+
result = "success"
5751
}
5852
return err
59-
} else {
60-
// No data change - skip
61-
result = "skipped"
62-
r.Collectors.RecordSkipped("no_data_change")
6353
}
54+
// process resource based on its type
55+
err := doRollingUpgrade(config, r.Collectors, r.Recorder, invokeReloadStrategy)
56+
if err == nil {
57+
result = "success"
58+
}
59+
return err
6460
}
61+
62+
// No data change - skip
63+
result = "skipped"
64+
r.Collectors.RecordSkipped("no_data_change")
6565
return nil
6666
}
6767

0 commit comments

Comments
 (0)