mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-27 06:29:42 -08:00
Write series references into index
This commit is contained in:
parent
55b36ab413
commit
0b77a3dafc
55
writer.go
55
writer.go
|
@ -153,9 +153,6 @@ type IndexWriter interface {
|
||||||
// The passed in values chained tuples of strings of the length of names.
|
// The passed in values chained tuples of strings of the length of names.
|
||||||
WriteLabelIndex(names []string, values []string) error
|
WriteLabelIndex(names []string, values []string) error
|
||||||
|
|
||||||
// WritesSeries serializes series identifying labels.
|
|
||||||
WriteSeries(ref uint32, ls ...Labels) error
|
|
||||||
|
|
||||||
// WritePostings writes a postings list for a single label pair.
|
// WritePostings writes a postings list for a single label pair.
|
||||||
WritePostings(name, value string, it Iterator) error
|
WritePostings(name, value string, it Iterator) error
|
||||||
|
|
||||||
|
@ -173,8 +170,9 @@ type indexWriter struct {
|
||||||
w io.Writer
|
w io.Writer
|
||||||
n int64
|
n int64
|
||||||
|
|
||||||
series []Labels
|
series []Labels // series in data section
|
||||||
offsets [][]ChunkOffset
|
offsets [][]ChunkOffset // chunk offsets per series
|
||||||
|
seriesOffsets []uint32 // offset of series references
|
||||||
|
|
||||||
symbols map[string]uint32 // symbol offsets
|
symbols map[string]uint32 // symbol offsets
|
||||||
labelIndexes []hashEntry // label index offsets
|
labelIndexes []hashEntry // label index offsets
|
||||||
|
@ -221,6 +219,9 @@ func (w *indexWriter) WriteStats(*BlockStats) error {
|
||||||
if err := w.writeSymbols(); err != nil {
|
if err := w.writeSymbols(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := w.writeSeries(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -233,13 +234,13 @@ func (w *indexWriter) writeSymbols() error {
|
||||||
}
|
}
|
||||||
sort.Strings(symbols)
|
sort.Strings(symbols)
|
||||||
|
|
||||||
buf := make([]byte, binary.MaxVarintLen32)
|
buf := [binary.MaxVarintLen32]byte{}
|
||||||
b := append(make([]byte, 4096), flagStd)
|
b := append(make([]byte, 4096), flagStd)
|
||||||
|
|
||||||
for _, s := range symbols {
|
for _, s := range symbols {
|
||||||
w.symbols[s] = uint32(w.n) + uint32(len(b))
|
w.symbols[s] = uint32(w.n) + uint32(len(b))
|
||||||
|
|
||||||
n := binary.PutUvarint(buf, uint64(len(s)))
|
n := binary.PutUvarint(buf[:], uint64(len(s)))
|
||||||
b = append(b, buf[:n]...)
|
b = append(b, buf[:n]...)
|
||||||
b = append(b, s...)
|
b = append(b, s...)
|
||||||
}
|
}
|
||||||
|
@ -247,7 +248,41 @@ func (w *indexWriter) writeSymbols() error {
|
||||||
h := crc32.NewIEEE()
|
h := crc32.NewIEEE()
|
||||||
wr := io.MultiWriter(h, w.w)
|
wr := io.MultiWriter(h, w.w)
|
||||||
|
|
||||||
l := len(b)
|
l := len(b) + 1
|
||||||
|
if err := w.write(wr, ((*[4]byte)(unsafe.Pointer(&l)))[:]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := w.write(wr, []byte{flagStd}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := w.write(wr, b); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return w.write(w.w, h.Sum(nil))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *indexWriter) writeSeries() error {
|
||||||
|
b := make([]byte, 0, 4096)
|
||||||
|
buf := [binary.MaxVarintLen32]byte{}
|
||||||
|
|
||||||
|
for _, lset := range w.series {
|
||||||
|
for _, l := range lset {
|
||||||
|
n := binary.PutUvarint(buf[:], uint64(len(lset)))
|
||||||
|
b = append(b, buf[:n]...)
|
||||||
|
|
||||||
|
n = binary.PutUvarint(buf[:], uint64(w.symbols[l.Name]))
|
||||||
|
b = append(b, buf[:n]...)
|
||||||
|
n = binary.PutUvarint(buf[:], uint64(w.symbols[l.Value]))
|
||||||
|
b = append(b, buf[:n]...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h := crc32.NewIEEE()
|
||||||
|
wr := io.MultiWriter(h, w.w)
|
||||||
|
|
||||||
|
l := len(b) + 1
|
||||||
if err := w.write(wr, ((*[4]byte)(unsafe.Pointer(&l)))[:]); err != nil {
|
if err := w.write(wr, ((*[4]byte)(unsafe.Pointer(&l)))[:]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -293,10 +328,6 @@ func (w *indexWriter) WriteLabelIndex(names []string, values []string) error {
|
||||||
return w.write(w.w, h.Sum(nil))
|
return w.write(w.w, h.Sum(nil))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *indexWriter) WriteSeries(ref uint32, ls ...Labels) error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *indexWriter) WritePostings(name, value string, it Iterator) error {
|
func (w *indexWriter) WritePostings(name, value string, it Iterator) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue