From 7ccecdd9f75a791ed091580965c68302230804ce Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Wed, 19 Jul 2023 02:14:55 +0000 Subject: [PATCH] cmd/ctrld: add more debugging information when self-check failed --- cmd/ctrld/cli.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/cmd/ctrld/cli.go b/cmd/ctrld/cli.go index 2384de8..a935a2e 100644 --- a/cmd/ctrld/cli.go +++ b/cmd/ctrld/cli.go @@ -1075,6 +1075,10 @@ func selfCheckStatus(status service.Status, domain string) service.Status { } }) v.WatchConfig() + var ( + lastAnswer *dns.Msg + lastErr error + ) for i := 0; i < maxAttempts; i++ { mu.Lock() if lcChanged != nil { @@ -1091,9 +1095,25 @@ func selfCheckStatus(status service.Status, domain string) service.Status { mainLog.Debug().Msgf("self-check against %q succeeded", domain) return status } + lastAnswer = r + lastErr = err bo.BackOff(ctx, fmt.Errorf("ExchangeContext: %w", err)) } mainLog.Debug().Msgf("self-check against %q failed", domain) + lc := cfg.FirstListener() + addr := net.JoinHostPort(lc.IP, strconv.Itoa(lc.Port)) + marker := strings.Repeat("=", 32) + mainLog.Debug().Msg(marker) + mainLog.Debug().Msgf("listener address : %s", addr) + mainLog.Debug().Msgf("last error : %v", lastErr) + if lastAnswer != nil { + mainLog.Debug().Msgf("last answer from ctrld :") + mainLog.Debug().Msg(marker) + for _, s := range strings.Split(lastAnswer.String(), "\n") { + mainLog.Debug().Msgf("%s", s) + } + mainLog.Debug().Msg(marker) + } return service.StatusUnknown }