From 304db100b382f0c1d1d9999dfe8ca77d1ac901c9 Mon Sep 17 00:00:00 2001 From: Yandi Lee <41042306+littlepangdi@users.noreply.github.com> Date: Mon, 8 Jul 2024 17:05:26 +0800 Subject: [PATCH] fix(gateway client): Fix nil pointer dereference panic when using ruler in ring mode (#13436) Fixes gateway client return with nil pointer panic when using ring mode for ruler service. `clients.dnsProvider` will only be init when using `simple mode` here: https://github.com/grafana/loki/blob/183406570411a5ad5ceaf32bf07451b8fce608c1/pkg/indexgateway/client.go#L184 Service like `ruler` using `ring mode` will run into panic `nil pointer reference` during restarting or exiting: --- pkg/indexgateway/client.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/indexgateway/client.go b/pkg/indexgateway/client.go index 3d4abd0e79a1..b5e05b7e26ec 100644 --- a/pkg/indexgateway/client.go +++ b/pkg/indexgateway/client.go @@ -210,7 +210,9 @@ func (s *GatewayClient) Stop() { if err != nil { level.Error(s.logger).Log("msg", "failed to stop index gateway connection pool", "err", err) } - s.dnsProvider.Stop() + if s.cfg.Mode == SimpleMode { + s.dnsProvider.Stop() + } } func (s *GatewayClient) QueryPages(ctx context.Context, queries []index.Query, callback index.QueryPagesCallback) error {