Skip to content

Commit d1eb2ba

Browse files
committed
Make the final sleep configurable, and set it to 0 in tests, so they don't timeout.
Signed-off-by: Tom Wilkie <[email protected]>
1 parent 37b8858 commit d1eb2ba

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

pkg/ingester/lifecycle_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ func defaultIngesterTestConfig() Config {
4040
cfg.LifecyclerConfig.ListenPort = func(i int) *int { return &i }(0)
4141
cfg.LifecyclerConfig.Addr = "localhost"
4242
cfg.LifecyclerConfig.ID = "localhost"
43+
cfg.LifecyclerConfig.FinalSleep = 0
4344
return cfg
4445
}
4546

pkg/ring/lifecycler.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ type LifecyclerConfig struct {
5050
ClaimOnRollout bool `yaml:"claim_on_rollout,omitempty"`
5151
NormaliseTokens bool `yaml:"normalise_tokens,omitempty"`
5252
InfNames []string `yaml:"interface_names"`
53+
FinalSleep time.Duration `yaml:"final_sleep"`
5354

5455
// For testing, you can override the address and ID of this ingester
5556
Addr string `yaml:"address"`
@@ -68,6 +69,7 @@ func (cfg *LifecyclerConfig) RegisterFlags(f *flag.FlagSet) {
6869
f.DurationVar(&cfg.MinReadyDuration, "ingester.min-ready-duration", 1*time.Minute, "Minimum duration to wait before becoming ready. This is to work around race conditions with ingesters exiting and updating the ring.")
6970
f.BoolVar(&cfg.ClaimOnRollout, "ingester.claim-on-rollout", false, "Send chunks to PENDING ingesters on exit.")
7071
f.BoolVar(&cfg.NormaliseTokens, "ingester.normalise-tokens", false, "Store tokens in a normalised fashion to reduce allocations.")
72+
f.DurationVar(&cfg.FinalSleep, "ingester.final-sleep", 30*time.Second, "Duration to sleep for before exiting, to ensure metrics are scraped.")
7173

7274
hostname, err := os.Hostname()
7375
if err != nil {
@@ -467,8 +469,8 @@ func (i *Lifecycler) processShutdown(ctx context.Context) {
467469
shutdownDuration.WithLabelValues("flush", "success").Observe(time.Since(flushStart).Seconds())
468470
}
469471

470-
// Sleep for 2 scrape intervals, so the shutdownDuration metric can be collected.
471-
time.Sleep(30 * time.Second)
472+
// Sleep so the shutdownDuration metric can be collected.
473+
time.Sleep(i.cfg.FinalSleep)
472474
}
473475

474476
// unregister removes our entry from consul.

pkg/ring/lifecycler_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ func TestRingNormaliseMigration(t *testing.T) {
4242
lifecyclerConfig1.NumTokens = 1
4343
lifecyclerConfig1.ClaimOnRollout = true
4444
lifecyclerConfig1.ID = "ing1"
45+
lifecyclerConfig1.FinalSleep = 0
4546

4647
ft := &flushTransferer{}
4748
l1, err := NewLifecycler(lifecyclerConfig1, ft)
@@ -67,6 +68,7 @@ func TestRingNormaliseMigration(t *testing.T) {
6768
lifecyclerConfig2.JoinAfter = 100 * time.Second
6869
lifecyclerConfig2.NormaliseTokens = true
6970
lifecyclerConfig2.ID = "ing2"
71+
lifecyclerConfig1.FinalSleep = 0
7072

7173
l2, err := NewLifecycler(lifecyclerConfig2, &flushTransferer{})
7274
require.NoError(t, err)

0 commit comments

Comments
 (0)