1515package controller
1616
1717import (
18+ "errors"
1819 "fmt"
1920 "os"
2021 "strings"
@@ -99,7 +100,8 @@ func (c *HAProxyController) Start() {
99100 c .initHandlers ()
100101 logger .Error (c .setupHAProxyRules ())
101102 logger .Error (os .Chdir (c .haproxy .Env .CfgDir ))
102- logger .Panic (c .haproxy .Service ("start" ))
103+ _ , errStart := (c .haproxy .Service ("start" ))
104+ logger .Panic (errStart )
103105
104106 c .SyncData ()
105107}
@@ -108,7 +110,8 @@ func (c *HAProxyController) Start() {
108110func (c * HAProxyController ) Stop () {
109111 logger .Infof ("Stopping Ingress Controller" )
110112 close (c .chShutdown )
111- logger .Error (c .haproxy .Service ("stop" ))
113+ _ , errStop := c .haproxy .Service ("stop" )
114+ logger .Error (errStop )
112115}
113116
114117// updateHAProxy is the control loop syncing HAProxy configuration
@@ -210,8 +213,30 @@ func (c *HAProxyController) updateHAProxy() {
210213
211214 if instance .NeedReload () {
212215 fs .RunDelayedFuncs ()
213- if err = c .haproxy .Service ("reload" ); err != nil {
216+ var msg string
217+ if msg , err = c .haproxy .Service ("reload" ); err != nil {
214218 logger .Error (err )
219+ errLines := strings .Split (msg , "\n " )
220+ msg := ""
221+ // Extract only lines with [ALERT] prefix to reuse functions
222+ for _ , line := range errLines {
223+ if strings .HasPrefix (line , "[ALERT]" ) {
224+ msg += strings .TrimPrefix (line , "[ALERT]" ) + "\n "
225+ }
226+ }
227+
228+ c .prometheusMetricsManager .SetUnableSyncGauge ()
229+ rerun , errCfgSnippet := annotations .CheckBackendConfigSnippetErrorOnReload (errors .New (msg ), c .haproxy .Env .CfgDir )
230+ logger .Error (errCfgSnippet )
231+ c .clean (true )
232+ if rerun {
233+ logger .Debug ("disabling some config snippets because of errors" )
234+ // We need to replay all these resources.
235+ c .store .SecretsProcessed = map [string ]struct {}{}
236+ c .store .BackendsProcessed = map [string ]struct {}{}
237+ c .updateHAProxy ()
238+ return
239+ }
215240 } else {
216241 logger .Info ("HAProxy reloaded" )
217242 }
0 commit comments