This commit is contained in:
2026-06-14 07:57:01 +03:00
parent 685c48f94f
commit 181031a753
14 changed files with 626 additions and 591 deletions

View File

@@ -36,14 +36,22 @@ func NewWALReplayer(opt WALReplayerOptions) (*WALReplayer, error) {
}, nil
}
func (s *WALReplayer) IndexPages() []PageToWrite {
func (s *WALReplayer) IndexPagesToRewrite() []PageToWrite {
return s.indexPages
}
func (s *WALReplayer) DataPages() []PageToWrite {
func (s *WALReplayer) DataPagesToRewrite() []PageToWrite {
return s.dataPages
}
func (s *WALReplayer) FreeIndexPages() []uint32 {
return s.freeIndexPages
}
func (s *WALReplayer) FreeDataPages() []uint32 {
return s.freeDataPages
}
func (s *WALReplayer) Replay() error {
for {
records, isLastPacket, err := s.walReader.NextPacket()
@@ -101,10 +109,9 @@ func (s *WALReplayer) onMetricAdd(rec MetricAddRecord) (err error) {
buf = make([]byte, DataPageSize)
)
s.metrics[rec.MetricID] = &ReplayMetric{
metricType: rec.MetricType,
fracDigits: byte(rec.FracDigits),
buf: buf,
databuf: buf[:DataPagePayloadSize],
MetricType: rec.MetricType,
FracDigits: rec.FracDigits,
Buf: buf,
}
return
}
@@ -137,39 +144,11 @@ func (s *WALReplayer) onMeasuresAppendWithGrow(rec MeasuresAppendWithGrowRecord,
result := metric.MeasuresAppendWithGrow(rec, isLastPacket)
//
if isLastPacket {
s.indexPages = append(s.indexPages, result.IndexPages...)
s.dataPages = append(s.dataPages, result.DataPages...)
s.indexPages = append(s.indexPages, result.IndexPagesToRewrite...)
s.dataPages = append(s.dataPages, result.DataPagesToRewrite...)
}
//
s.freeIndexPages = s.freeIndexPages[:len(s.freeIndexPages)-result.ReusedIndexPagesCount]
s.freeDataPages = s.freeDataPages[:len(s.freeDataPages)-result.ReusedDataPagesCount]
return
}
//func (s *WALReplayer) collectPagesToWrite(metric *ReplayMetric, rec WALRecordAppendMeasures) {
// metric.ApplyHeadDataPage(rec.CompletedDataPage)
// s.dataPages = append(s.dataPages, PageToWrite{
// PageNo: p.PageNo,
// Content: metric.buf,
// })
// for _, x := range rec.DataPages {
// s.dataPages = append(s.dataPages, PageToWrite{
// PageNo: x.PageNo,
// Content: x.Content,
// })
// }
//metric.ApplyHeadIndexPages(rec.ChangedIndexLevels)
//}
// func (s *WALReplayer) replayPacket(records []any, isLastPacket bool) {
// for _, untyped := range records {
// switch rec := untyped.(type) {
// case WALRecordAppendMeasures:
// s.onWALRecordAppendMeasures(rec, isLastPacket)
// }
// }
// return
// }