Skip to content

Commit e8faeef

Browse files
committed
feat[updater](): disable log sender after send logs - exlude backend down errors
1 parent 4f910cb commit e8faeef

3 files changed

Lines changed: 62 additions & 2 deletions

File tree

installer/updater/backend.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,32 @@ import (
55
"encoding/json"
66
"fmt"
77
"net/http"
8+
"strings"
89

910
"github.com/utmstack/UTMStack/installer/config"
1011
"github.com/utmstack/UTMStack/installer/utils"
1112
)
1213

14+
// IsBackendMaintenanceError checks if the error is due to backend being unavailable (maintenance or down)
15+
func IsBackendMaintenanceError(err error) bool {
16+
if err == nil {
17+
return false
18+
}
19+
errStr := err.Error()
20+
// Check for common signs of backend being unavailable
21+
return (strings.Contains(errStr, "<!DOCTYPE html") ||
22+
strings.Contains(errStr, "<html>") ||
23+
strings.Contains(errStr, "invalid character '<'") ||
24+
strings.Contains(errStr, "UTMStack - Maintenance") ||
25+
strings.Contains(errStr, "currently under maintenance") ||
26+
strings.Contains(errStr, "502 Bad Gateway") ||
27+
strings.Contains(errStr, "503 Service Unavailable") ||
28+
strings.Contains(errStr, "504 Gateway Timeout")) ||
29+
(strings.Contains(errStr, "status code: 502") ||
30+
strings.Contains(errStr, "status code: 503") ||
31+
strings.Contains(errStr, "status code: 504"))
32+
}
33+
1334
func getConfigFromBackend(id uint) ([]ConfigBackend, error) {
1435
transCfg := &http.Transport{
1536
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},

installer/updater/logprocessor.go

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ func SyncSystemLogs() {
3535

3636
active, err := isLogSenderEnabled()
3737
if err != nil {
38-
config.Logger().ErrorF("Error getting log sender config: %v", err)
38+
if !IsBackendMaintenanceError(err) {
39+
config.Logger().ErrorF("Error getting log sender config: %v", err)
40+
}
3941
}
4042

4143
if !config.Updating && active {
@@ -51,9 +53,37 @@ func SyncSystemLogs() {
5153
}
5254
}
5355

56+
func disableLogSender() error {
57+
backConf, err := getConfigFromBackend(9)
58+
if err != nil {
59+
if IsBackendMaintenanceError(err) {
60+
return nil
61+
}
62+
return err
63+
}
64+
for i, c := range backConf {
65+
if c.ConfParamShort == "utmstack.intance.send.logs" {
66+
backConf[i].ConfParamValue = "false"
67+
}
68+
}
69+
70+
err = updateConfigInBackend(backConf, 9)
71+
if err != nil {
72+
if IsBackendMaintenanceError(err) {
73+
return nil
74+
}
75+
return fmt.Errorf("error disabling log sender in backend: %v", err)
76+
}
77+
78+
return nil
79+
}
80+
5481
func isLogSenderEnabled() (bool, error) {
5582
backConf, err := getConfigFromBackend(9)
5683
if err != nil {
84+
if IsBackendMaintenanceError(err) {
85+
return false, nil
86+
}
5787
return false, err
5888
}
5989

@@ -92,6 +122,11 @@ func CollectAndShipSwarmLogs() error {
92122
_ = os.Remove(archiveName)
93123
}
94124

125+
err = disableLogSender()
126+
if err != nil {
127+
return fmt.Errorf("error disabling log sender: %v", err)
128+
}
129+
95130
return nil
96131
}
97132

installer/updater/window.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ func UpdateWindowConfig() {
1313
for {
1414
window, err := getWindowMaintaince()
1515
if err != nil {
16-
config.Logger().ErrorF("Error getting maintenance window config: %v", err)
16+
// Only log error if it's not a maintenance error
17+
if !IsBackendMaintenanceError(err) {
18+
config.Logger().ErrorF("Error getting maintenance window config: %v", err)
19+
}
20+
// If backend is in maintenance, just skip this iteration silently
1721
}
1822

1923
if window != "" {

0 commit comments

Comments
 (0)