From 16aee8047c9ad2c7881997d6747444cc36bcf2a7 Mon Sep 17 00:00:00 2001 From: "Arati R." <33031346+suntala@users.noreply.github.com> Date: Thu, 24 Jul 2025 21:38:35 +0200 Subject: [PATCH] Unified Search: Randomise instance selected by distributor (#108619) * Randomise instance selected by distributor * add namespace to distributor logging --------- Co-authored-by: Will Assis --- .../unified/resource/search_server_distributor.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/storage/unified/resource/search_server_distributor.go b/pkg/storage/unified/resource/search_server_distributor.go index f410207b59e..3fc0203282d 100644 --- a/pkg/storage/unified/resource/search_server_distributor.go +++ b/pkg/storage/unified/resource/search_server_distributor.go @@ -3,6 +3,7 @@ package resource import ( "context" "hash/fnv" + "math/rand" "time" "github.com/grafana/dskit/ring" @@ -138,7 +139,9 @@ func (ds *distributorServer) getClientToDistributeRequest(ctx context.Context, n return ctx, nil, err } - client, err := ds.clientPool.GetClientForInstance(rs.Instances[0]) + // Randomly select an instance for primitive load balancing + inst := rs.Instances[rand.Intn(len(rs.Instances))] + client, err := ds.clientPool.GetClientForInstance(inst) if err != nil { return ctx, nil, err } @@ -148,9 +151,9 @@ func (ds *distributorServer) getClientToDistributeRequest(ctx context.Context, n md = make(metadata.MD) } - ds.log.Info("distributing request to ", "methodName", methodName, "instanceId", rs.Instances[0].Id) + ds.log.Info("distributing request to ", "methodName", methodName, "instanceId", inst.Id, "namespace", namespace) - _ = grpc.SetHeader(ctx, metadata.Pairs("proxied-instance-id", rs.Instances[0].Id)) + _ = grpc.SetHeader(ctx, metadata.Pairs("proxied-instance-id", inst.Id)) return userutils.InjectOrgID(metadata.NewOutgoingContext(ctx, md), namespace), client.(*RingClient).Client, nil }