wp
This commit is contained in:
@@ -12,7 +12,7 @@ import (
|
||||
|
||||
"gordenko.dev/dima/qb/atree"
|
||||
"gordenko.dev/dima/qb/freelist"
|
||||
"gordenko.dev/dima/qb/txlog"
|
||||
"gordenko.dev/dima/qb/storage"
|
||||
)
|
||||
|
||||
func JoinSnapshotFileName(dir string, snapshotNumber int) string {
|
||||
@@ -41,7 +41,7 @@ type Database struct {
|
||||
dir string
|
||||
databaseName string
|
||||
snapshotNumber int
|
||||
txlog *txlog.Writer
|
||||
storage *storage.Writer
|
||||
atree *atree.Atree
|
||||
tcpPort int
|
||||
logfile *os.File
|
||||
@@ -186,7 +186,7 @@ func (s *Database) recovery() {
|
||||
// logNumber = recipe.LogNumber
|
||||
// }
|
||||
|
||||
// s.txlog, err = txlog.NewWriter(txlog.WriterOptions{
|
||||
// s.storage, err = storage.NewWriter(storage.WriterOptions{
|
||||
// Dir: s.dir,
|
||||
// LogNumber: logNumber,
|
||||
// AppendToWorkerQueue: s.appendJobToWorkerQueue,
|
||||
@@ -199,7 +199,7 @@ func (s *Database) recovery() {
|
||||
// qb.Abort(qb.CreateChangesWriterFailed, err)
|
||||
|
||||
// }
|
||||
// go s.txlog.Run()
|
||||
// go s.storage.Run()
|
||||
|
||||
// // fileNames, err := s.searchREDOFiles()
|
||||
// // if err != nil {
|
||||
@@ -249,7 +249,7 @@ func (s *Database) replayChanges(snapshotNumber int) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
walReader, err := txlog.NewReader(txlog.ReaderOptions{
|
||||
walReader, err := storage.NewWALReader(storage.WALReaderOptions{
|
||||
FileName: JoinWALFileName(s.dir, snapshotNumber),
|
||||
BufferSize: 8 * 1024 * 1024,
|
||||
})
|
||||
@@ -271,29 +271,21 @@ func (s *Database) replayChanges(snapshotNumber int) (err error) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = s.storage.WritePagesToAtree(walReplayer.IndexPages(), walReplayer.DataPages())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// FIX free pages sync
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Database) rewritePagesFromLastWALPacket(list []any) error {
|
||||
// var (
|
||||
// indexPages []txlog.PageToWrite
|
||||
// dataPages []txlog.PageToWrite
|
||||
// )
|
||||
// for _, untyped := range list {
|
||||
// switch rec := untyped.(type) {
|
||||
// case txlog.WALRecordAppendMeasures:
|
||||
// metric, ok := s.metrics[rec.MetricID]
|
||||
// if !ok {
|
||||
// qb.Abort(qb.MetricNotFoundDuringReplay, nil)
|
||||
// }
|
||||
// //metric.ReplayAppendedMeasures(rec)
|
||||
|
||||
// default:
|
||||
// qb.Abort(qb.UnknownTxLogRecordTypeBug,
|
||||
// fmt.Errorf("bug: unknown record type %T in TransactionLog", rec))
|
||||
// }
|
||||
// }
|
||||
return nil
|
||||
func (s *Database) relayMetricsToMetrics(replayMetrics map[uint32]*ReplayMetric) {
|
||||
for metricID, x := range replayMetrics {
|
||||
s.metrics[metricID] = x.ToMetric()
|
||||
}
|
||||
}
|
||||
|
||||
// FIX
|
||||
@@ -314,14 +306,14 @@ func calculateDataBufferSize(payloadSize int) int {
|
||||
return bufferSize
|
||||
}
|
||||
}
|
||||
return atree.DataPageSize
|
||||
return storage.DataPageSize
|
||||
}
|
||||
|
||||
func allocateBuffers(requiredSpace int) (buf, databuf []byte) {
|
||||
bufferSize := calculateDataBufferSize(requiredSpace)
|
||||
buf = make([]byte, bufferSize)
|
||||
if bufferSize == atree.DataPageSize {
|
||||
databuf = buf[:atree.DataPagePayloadSize]
|
||||
if bufferSize == storage.DataPageSize {
|
||||
databuf = buf[:storage.DataPagePayloadSize]
|
||||
} else {
|
||||
databuf = buf
|
||||
}
|
||||
@@ -343,6 +335,20 @@ func growBuffers(in growBuffersIn) (buf, databuf []byte) {
|
||||
return
|
||||
}
|
||||
|
||||
type shrinkBufferIn struct {
|
||||
Buffer []byte
|
||||
TimestampsSize int
|
||||
ValuesSize int
|
||||
NewBufferSize int
|
||||
}
|
||||
|
||||
func shrinkBuffer(in shrinkBufferIn) []byte {
|
||||
buf := make([]byte, in.NewBufferSize)
|
||||
copy(buf, in.Buffer[:in.ValuesSize])
|
||||
copy(buf[:len(buf)-in.TimestampsSize], in.Buffer[len(in.Buffer)-in.TimestampsSize:])
|
||||
return buf
|
||||
}
|
||||
|
||||
//func (s *Database) verifySnapshot(fileName string) (_ bool, err error) {
|
||||
// file, err := os.Open(fileName)
|
||||
// if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user