Small improvements, add const, remove copypasta (#8106)

Signed-off-by: Mikhail Fesenko <proggga@gmail.com>
Signed-off-by: Jesus Vazquez <jesusvzpg@gmail.com>
This commit is contained in:
Mikhail Fesenko 2024-02-01 14:30:50 +01:00 committed by GitHub
parent 581d8d86b4
commit 5f2c3a5d3e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -50,6 +50,8 @@ const (
FormatV2 = 2 FormatV2 = 2
indexFilename = "index" indexFilename = "index"
seriesByteAlign = 16
) )
type indexWriterSeries struct { type indexWriterSeries struct {
@ -436,11 +438,11 @@ func (w *Writer) AddSeries(ref storage.SeriesRef, lset labels.Labels, chunks ...
} }
// We add padding to 16 bytes to increase the addressable space we get through 4 byte // We add padding to 16 bytes to increase the addressable space we get through 4 byte
// series references. // series references.
if err := w.addPadding(16); err != nil { if err := w.addPadding(seriesByteAlign); err != nil {
return fmt.Errorf("failed to write padding bytes: %w", err) return fmt.Errorf("failed to write padding bytes: %w", err)
} }
if w.f.pos%16 != 0 { if w.f.pos%seriesByteAlign != 0 {
return fmt.Errorf("series write not 16-byte aligned at %d", w.f.pos) return fmt.Errorf("series write not 16-byte aligned at %d", w.f.pos)
} }
@ -711,6 +713,7 @@ func (w *Writer) writeLabelIndexesOffsetTable() error {
return err return err
} }
} }
// Write out the length. // Write out the length.
w.buf1.Reset() w.buf1.Reset()
l := w.f.pos - startPos - 4 l := w.f.pos - startPos - 4
@ -722,9 +725,7 @@ func (w *Writer) writeLabelIndexesOffsetTable() error {
return err return err
} }
w.buf1.Reset() return w.writeLenghtAndHash(startPos)
w.buf1.PutHashSum(w.crc32)
return w.write(w.buf1.Get())
} }
// writePostingsOffsetTable writes the postings offset table. // writePostingsOffsetTable writes the postings offset table.
@ -792,6 +793,10 @@ func (w *Writer) writePostingsOffsetTable() error {
} }
w.fPO = nil w.fPO = nil
return w.writeLenghtAndHash(startPos)
}
func (w *Writer) writeLenghtAndHash(startPos uint64) error {
// Write out the length. // Write out the length.
w.buf1.Reset() w.buf1.Reset()
l := w.f.pos - startPos - 4 l := w.f.pos - startPos - 4
@ -803,7 +808,7 @@ func (w *Writer) writePostingsOffsetTable() error {
return err return err
} }
// Finally write the hash. // Write out the hash.
w.buf1.Reset() w.buf1.Reset()
w.buf1.PutHashSum(w.crc32) w.buf1.PutHashSum(w.crc32)
return w.write(w.buf1.Get()) return w.write(w.buf1.Get())
@ -849,10 +854,10 @@ func (w *Writer) writePostingsToTmpFiles() error {
for d.Len() > 0 { for d.Len() > 0 {
d.ConsumePadding() d.ConsumePadding()
startPos := w.toc.LabelIndices - uint64(d.Len()) startPos := w.toc.LabelIndices - uint64(d.Len())
if startPos%16 != 0 { if startPos%seriesByteAlign != 0 {
return fmt.Errorf("series not 16-byte aligned at %d", startPos) return fmt.Errorf("series not 16-byte aligned at %d", startPos)
} }
offsets = append(offsets, uint32(startPos/16)) offsets = append(offsets, uint32(startPos/seriesByteAlign))
// Skip to next series. // Skip to next series.
x := d.Uvarint() x := d.Uvarint()
d.Skip(x + crc32.Size) d.Skip(x + crc32.Size)
@ -911,7 +916,7 @@ func (w *Writer) writePostingsToTmpFiles() error {
if _, ok := postings[lno]; !ok { if _, ok := postings[lno]; !ok {
postings[lno] = map[uint32][]uint32{} postings[lno] = map[uint32][]uint32{}
} }
postings[lno][lvo] = append(postings[lno][lvo], uint32(startPos/16)) postings[lno][lvo] = append(postings[lno][lvo], uint32(startPos/seriesByteAlign))
} }
} }
// Skip to next series. // Skip to next series.
@ -948,7 +953,6 @@ func (w *Writer) writePostingsToTmpFiles() error {
return w.ctx.Err() return w.ctx.Err()
default: default:
} }
} }
return nil return nil
} }
@ -1556,7 +1560,7 @@ func (r *Reader) LabelNamesFor(ctx context.Context, ids ...storage.SeriesRef) ([
// In version 2 series IDs are no longer exact references but series are 16-byte padded // In version 2 series IDs are no longer exact references but series are 16-byte padded
// and the ID is the multiple of 16 of the actual position. // and the ID is the multiple of 16 of the actual position.
if r.version == FormatV2 { if r.version == FormatV2 {
offset = id * 16 offset = id * seriesByteAlign
} }
d := encoding.NewDecbufUvarintAt(r.b, int(offset), castagnoliTable) d := encoding.NewDecbufUvarintAt(r.b, int(offset), castagnoliTable)
@ -1595,7 +1599,7 @@ func (r *Reader) LabelValueFor(ctx context.Context, id storage.SeriesRef, label
// In version 2 series IDs are no longer exact references but series are 16-byte padded // In version 2 series IDs are no longer exact references but series are 16-byte padded
// and the ID is the multiple of 16 of the actual position. // and the ID is the multiple of 16 of the actual position.
if r.version == FormatV2 { if r.version == FormatV2 {
offset = id * 16 offset = id * seriesByteAlign
} }
d := encoding.NewDecbufUvarintAt(r.b, int(offset), castagnoliTable) d := encoding.NewDecbufUvarintAt(r.b, int(offset), castagnoliTable)
buf := d.Get() buf := d.Get()
@ -1621,7 +1625,7 @@ func (r *Reader) Series(id storage.SeriesRef, builder *labels.ScratchBuilder, ch
// In version 2 series IDs are no longer exact references but series are 16-byte padded // In version 2 series IDs are no longer exact references but series are 16-byte padded
// and the ID is the multiple of 16 of the actual position. // and the ID is the multiple of 16 of the actual position.
if r.version == FormatV2 { if r.version == FormatV2 {
offset = id * 16 offset = id * seriesByteAlign
} }
d := encoding.NewDecbufUvarintAt(r.b, int(offset), castagnoliTable) d := encoding.NewDecbufUvarintAt(r.b, int(offset), castagnoliTable)
if d.Err() != nil { if d.Err() != nil {