From cb4f23fc9851298de5e5269da332cc466543be1c Mon Sep 17 00:00:00 2001 From: Matthew Jaffee Date: Thu, 28 Apr 2022 13:08:08 -0500 Subject: [PATCH] translate data: only redirect to UNKNOWN node if there is no STARTED caveat: this will always redirect to the first UNKNOWN node... possibly we would want to select randomly or have the ability to retry different nodes. --- api.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/api.go b/api.go index 38600f1c2..2e4471cf2 100644 --- a/api.go +++ b/api.go @@ -867,10 +867,15 @@ func (api *API) TranslateData(ctx context.Context, indexName string, partition i var upNode *topology.Node for _, node := range nodes { // we all UNKNOWN state here because we often mistakenly think - // a node is not up under heavy load. - if node.State == disco.NodeStateStarted || node.State == disco.NodeStateUnknown { + // a node is not up under heavy load, but prefer STARTED if we + // find one. + if node.State == disco.NodeStateStarted { upNode = node break + } else if node.State == disco.NodeStateUnknown { + if upNode != nil { + upNode = node + } } }