github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/storage/stores/shipper/indexgateway/lifecycle.go (about)

     1  package indexgateway
     2  
     3  import (
     4  	"github.com/grafana/dskit/ring"
     5  )
     6  
     7  func (rm *RingManager) OnRingInstanceRegister(_ *ring.BasicLifecycler, ringDesc ring.Desc, instanceExists bool, instanceID string, instanceDesc ring.InstanceDesc) (ring.InstanceState, ring.Tokens) {
     8  	// When we initialize the index gateway instance in the ring we want to start from
     9  	// a clean situation, so whatever is the state we set it JOINING, while we keep existing
    10  	// tokens (if any) or the ones loaded from file.
    11  	var tokens []uint32
    12  	if instanceExists {
    13  		tokens = instanceDesc.GetTokens()
    14  	}
    15  
    16  	takenTokens := ringDesc.GetTokens()
    17  	newTokens := ring.GenerateTokens(ringNumTokens-len(tokens), takenTokens)
    18  
    19  	// Tokens sorting will be enforced by the parent caller.
    20  	tokens = append(tokens, newTokens...)
    21  
    22  	return ring.JOINING, tokens
    23  }
    24  
    25  func (rm *RingManager) OnRingInstanceTokens(_ *ring.BasicLifecycler, _ ring.Tokens) {}
    26  func (rm *RingManager) OnRingInstanceStopping(_ *ring.BasicLifecycler)              {}
    27  func (rm *RingManager) OnRingInstanceHeartbeat(_ *ring.BasicLifecycler, _ *ring.Desc, _ *ring.InstanceDesc) {
    28  }