NewBasicLifecycler makes a new BasicLifecycler.
(cfg BasicLifecyclerConfig, ringName, ringKey string, store kv.Client, delegate BasicLifecyclerDelegate, logger log.Logger, reg prometheus.Registerer)
| 109 | |
| 110 | // NewBasicLifecycler makes a new BasicLifecycler. |
| 111 | func NewBasicLifecycler(cfg BasicLifecyclerConfig, ringName, ringKey string, store kv.Client, delegate BasicLifecyclerDelegate, logger log.Logger, reg prometheus.Registerer) (*BasicLifecycler, error) { |
| 112 | tokenGenerator := cfg.RingTokenGenerator |
| 113 | if tokenGenerator == nil { |
| 114 | tokenGenerator = NewRandomTokenGenerator() |
| 115 | } |
| 116 | |
| 117 | l := &BasicLifecycler{ |
| 118 | cfg: cfg, |
| 119 | ringName: ringName, |
| 120 | ringKey: ringKey, |
| 121 | logger: logger, |
| 122 | store: store, |
| 123 | delegate: delegate, |
| 124 | metrics: NewBasicLifecyclerMetrics(ringName, reg), |
| 125 | actorChan: make(chan func()), |
| 126 | keepInstanceInTheRingOnShutdown: atomic.NewBool(cfg.KeepInstanceInTheRingOnShutdown), |
| 127 | tokenGenerator: tokenGenerator, |
| 128 | } |
| 129 | |
| 130 | l.metrics.tokensToOwn.Set(float64(cfg.NumTokens)) |
| 131 | l.BasicService = services.NewBasicService(l.starting, l.running, l.stopping) |
| 132 | |
| 133 | return l, nil |
| 134 | } |
| 135 | |
| 136 | func (l *BasicLifecycler) GetInstanceID() string { |
| 137 | return l.cfg.ID |