mirror of
https://github.com/prometheus/prometheus.git
synced 2025-02-21 03:16:00 -08:00
Use page writer in compaction
This commit is contained in:
parent
89d8467f5c
commit
0dffd52238
1
head.go
1
head.go
|
@ -409,6 +409,7 @@ func (h *HeadBlock) updateMapping() {
|
|||
h.mtx.RLock()
|
||||
|
||||
if h.mapper.sortable != nil && h.mapper.Len() == len(h.descs) {
|
||||
h.mtx.RUnlock()
|
||||
return
|
||||
}
|
||||
|
||||
|
|
2
wal.go
2
wal.go
|
@ -174,7 +174,7 @@ const (
|
|||
// walPageBytes is the alignment for flushing records to the backing Writer.
|
||||
// It should be a multiple of the minimum sector size so that WAL can safely
|
||||
// distinguish between torn writes and ordinary data corruption.
|
||||
walPageBytes = 32 * minSectorSize
|
||||
walPageBytes = 16 * minSectorSize
|
||||
)
|
||||
|
||||
func newWALEncoder(f *os.File) (*walEncoder, error) {
|
||||
|
|
22
writer.go
22
writer.go
|
@ -9,6 +9,7 @@ import (
|
|||
"strings"
|
||||
|
||||
"github.com/bradfitz/slice"
|
||||
"github.com/coreos/etcd/pkg/ioutil"
|
||||
"github.com/fabxc/tsdb/chunks"
|
||||
"github.com/fabxc/tsdb/labels"
|
||||
"github.com/pkg/errors"
|
||||
|
@ -22,6 +23,8 @@ const (
|
|||
MagicIndex = 0xBAAAD700
|
||||
)
|
||||
|
||||
const compactionPageBytes = minSectorSize * 64
|
||||
|
||||
// SeriesWriter serializes a time block of chunked series data.
|
||||
type SeriesWriter interface {
|
||||
// WriteSeries writes the time series data chunks for a single series.
|
||||
|
@ -40,7 +43,8 @@ type SeriesWriter interface {
|
|||
// seriesWriter implements the SeriesWriter interface for the standard
|
||||
// serialization format.
|
||||
type seriesWriter struct {
|
||||
w io.Writer
|
||||
ow io.Writer
|
||||
w *ioutil.PageWriter
|
||||
n int64
|
||||
c int
|
||||
|
||||
|
@ -49,7 +53,8 @@ type seriesWriter struct {
|
|||
|
||||
func newSeriesWriter(w io.Writer, index IndexWriter) *seriesWriter {
|
||||
return &seriesWriter{
|
||||
w: w,
|
||||
ow: w,
|
||||
w: ioutil.NewPageWriter(w, compactionPageBytes, 0),
|
||||
n: 0,
|
||||
index: index,
|
||||
}
|
||||
|
@ -128,7 +133,7 @@ func (w *seriesWriter) Size() int64 {
|
|||
}
|
||||
|
||||
func (w *seriesWriter) Close() error {
|
||||
return nil
|
||||
return w.w.Flush()
|
||||
}
|
||||
|
||||
// ChunkMeta holds information about a chunk of data.
|
||||
|
@ -178,7 +183,8 @@ type indexWriterSeries struct {
|
|||
// indexWriter implements the IndexWriter interface for the standard
|
||||
// serialization format.
|
||||
type indexWriter struct {
|
||||
w io.Writer
|
||||
ow io.Writer
|
||||
w *ioutil.PageWriter
|
||||
n int64
|
||||
|
||||
series map[uint32]*indexWriterSeries
|
||||
|
@ -190,7 +196,8 @@ type indexWriter struct {
|
|||
|
||||
func newIndexWriter(w io.Writer) *indexWriter {
|
||||
return &indexWriter{
|
||||
w: w,
|
||||
w: ioutil.NewPageWriter(w, compactionPageBytes, 0),
|
||||
ow: w,
|
||||
n: 0,
|
||||
symbols: make(map[string]uint32, 4096),
|
||||
series: make(map[uint32]*indexWriterSeries, 4096),
|
||||
|
@ -489,5 +496,8 @@ func (w *indexWriter) finalize() error {
|
|||
}
|
||||
|
||||
func (w *indexWriter) Close() error {
|
||||
return w.finalize()
|
||||
if err := w.finalize(); err != nil {
|
||||
return err
|
||||
}
|
||||
return w.w.Flush()
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue