Skip to content

Commit c0b1423

Browse files
tomwilkiejml
authored andcommitted
Add a flush operation timeout. (#587)
1 parent fc21ec2 commit c0b1423

File tree

2 files changed

+5
-0
lines changed

2 files changed

+5
-0
lines changed

pkg/ingester/ingester.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ type Config struct {
7575
// Config for chunk flushing
7676
FlushCheckPeriod time.Duration
7777
MaxChunkIdle time.Duration
78+
FlushOpTimeout time.Duration
7879
ConcurrentFlushes int
7980
ChunkEncoding string
8081

@@ -104,6 +105,7 @@ func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
104105

105106
f.DurationVar(&cfg.FlushCheckPeriod, "ingester.flush-period", 1*time.Minute, "Period with which to attempt to flush chunks.")
106107
f.DurationVar(&cfg.MaxChunkIdle, "ingester.max-chunk-idle", promql.StalenessDelta, "Maximum chunk idle time before flushing.")
108+
f.DurationVar(&cfg.FlushOpTimeout, "ingester.flush-op-timeout", 1*time.Minute, "Timeout for individual flush operations.")
107109
f.IntVar(&cfg.ConcurrentFlushes, "ingester.concurrent-flushes", DefaultConcurrentFlush, "Number of concurrent goroutines flushing to dynamodb.")
108110
f.StringVar(&cfg.ChunkEncoding, "ingester.chunk-encoding", "1", "Encoding version to use for chunks.")
109111

pkg/ingester/ingester_flush.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,9 @@ func (i *Ingester) flushUserSeries(userID string, fp model.Fingerprint, immediat
167167

168168
// flush the chunks without locking the series, as we don't want to hold the series lock for the duration of the dynamo/s3 rpcs.
169169
ctx := user.InjectOrgID(context.Background(), userID)
170+
ctx, cancel := context.WithTimeout(ctx, i.cfg.FlushOpTimeout)
171+
defer cancel() // releases resources if slowOperation completes before timeout elapses
172+
170173
err := i.flushChunks(ctx, fp, series.metric, chunks)
171174
if err != nil {
172175
return err

0 commit comments

Comments
 (0)