From 65ab76e175c955b2e511673659580b5a19dd3eb3 Mon Sep 17 00:00:00 2001 From: Periklis Tsirakidis Date: Mon, 6 Nov 2023 14:45:44 +0100 Subject: [PATCH] fix: All lifecycler cfgs ref a valid IPv6 addr and port combination (#11121) **What this PR does / why we need it**: Ensure that all constructors of LifeCyclerConfig are using `net.JoinHostPort` for instance addr and port combinations. This enables IPv6 usage compatible across the code based. Currently only distributors provide IPv6 compatibility because they use `Lifecycler` (that pulls the addr/port in the `NewLifeCycler`) while everything else uses `BasicLifeCycler` delegate this to the user defining an addr/port combination in `LifecyclerConfig`. --- CHANGELOG.md | 1 + pkg/distributor/distributor_ring.go | 5 +++-- pkg/ruler/base/ruler_ring.go | 4 +++- pkg/util/ring/ring_config.go | 5 +++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ed4fb36b27e..4e7e70e30b10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ * [10451](https://github.com/grafana/loki/pull/10451) **shantanualsi** Upgrade thanos `objstore` * [10814](https://github.com/grafana/loki/pull/10814) **shantanualsi,kaviraj** Upgrade prometheus to v0.47.1 and dskit * [10959](https://github.com/grafana/loki/pull/10959) **slim-bean** introduce a backoff wait on subquery retries. +* [11121](https://github.com/grafana/loki/pull/11121) **periklis** Ensure all lifecycler cfgs ref a valid IPv6 addr and port combination #### Promtail diff --git a/pkg/distributor/distributor_ring.go b/pkg/distributor/distributor_ring.go index fa0b04b237f8..0c7451ebdea2 100644 --- a/pkg/distributor/distributor_ring.go +++ b/pkg/distributor/distributor_ring.go @@ -2,8 +2,9 @@ package distributor import ( "flag" - "fmt" + "net" "os" + "strconv" "time" "github.com/go-kit/log" @@ -72,7 +73,7 @@ func (cfg *RingConfig) ToBasicLifecyclerConfig(logger log.Logger) (ring.BasicLif return ring.BasicLifecyclerConfig{ ID: cfg.InstanceID, - Addr: fmt.Sprintf("%s:%d", instanceAddr, instancePort), + Addr: net.JoinHostPort(instanceAddr, strconv.Itoa(instancePort)), HeartbeatPeriod: cfg.HeartbeatPeriod, HeartbeatTimeout: cfg.HeartbeatTimeout, TokensObservePeriod: 0, diff --git a/pkg/ruler/base/ruler_ring.go b/pkg/ruler/base/ruler_ring.go index ec1f19f6cfe1..697b1d8b9ac5 100644 --- a/pkg/ruler/base/ruler_ring.go +++ b/pkg/ruler/base/ruler_ring.go @@ -3,7 +3,9 @@ package base import ( "flag" "fmt" + "net" "os" + "strconv" "time" "github.com/go-kit/log" @@ -88,7 +90,7 @@ func (cfg *RingConfig) ToLifecyclerConfig(logger log.Logger) (ring.BasicLifecycl return ring.BasicLifecyclerConfig{ ID: cfg.InstanceID, - Addr: fmt.Sprintf("%s:%d", instanceAddr, instancePort), + Addr: net.JoinHostPort(instanceAddr, strconv.Itoa(instancePort)), HeartbeatPeriod: cfg.HeartbeatPeriod, TokensObservePeriod: 0, NumTokens: cfg.NumTokens, diff --git a/pkg/util/ring/ring_config.go b/pkg/util/ring/ring_config.go index 962c48d940bb..eb9945ffcb3e 100644 --- a/pkg/util/ring/ring_config.go +++ b/pkg/util/ring/ring_config.go @@ -2,8 +2,9 @@ package ring import ( "flag" - "fmt" + "net" "os" + "strconv" "time" "github.com/go-kit/log" @@ -81,7 +82,7 @@ func (cfg *RingConfig) ToLifecyclerConfig(numTokens int, logger log.Logger) (rin return ring.BasicLifecyclerConfig{ ID: cfg.InstanceID, - Addr: fmt.Sprintf("%s:%d", instanceAddr, instancePort), + Addr: net.JoinHostPort(instanceAddr, strconv.Itoa(instancePort)), Zone: cfg.InstanceZone, HeartbeatPeriod: cfg.HeartbeatPeriod, TokensObservePeriod: 0,