app/vminsert: flush bufs if needed after the current row is added

Previously the data for the added row could be overwritten by the flush
before the row addition is complete.
This commit is contained in:
Aliaksandr Valialkin 2020-07-26 12:09:01 +03:00
parent edb1eca6f1
commit 215eba0b82

View file

@ -70,11 +70,6 @@ func (ctx *InsertCtx) WriteDataPointExt(metricNameRaw []byte, labels []prompb.La
} }
func (ctx *InsertCtx) addRow(metricNameRaw []byte, timestamp int64, value float64) error { func (ctx *InsertCtx) addRow(metricNameRaw []byte, timestamp int64, value float64) error {
if len(ctx.metricNamesBuf) > 16*1024*1024 {
if err := ctx.FlushBufs(); err != nil {
return err
}
}
mrs := ctx.mrs mrs := ctx.mrs
if cap(mrs) > len(mrs) { if cap(mrs) > len(mrs) {
mrs = mrs[:len(mrs)+1] mrs = mrs[:len(mrs)+1]
@ -86,6 +81,11 @@ func (ctx *InsertCtx) addRow(metricNameRaw []byte, timestamp int64, value float6
mr.MetricNameRaw = metricNameRaw mr.MetricNameRaw = metricNameRaw
mr.Timestamp = timestamp mr.Timestamp = timestamp
mr.Value = value mr.Value = value
if len(ctx.metricNamesBuf) > 16*1024*1024 {
if err := ctx.FlushBufs(); err != nil {
return err
}
}
return nil return nil
} }