wp
This commit is contained in:
@@ -23,7 +23,7 @@ const (
|
||||
|
||||
filePerm = 0770
|
||||
|
||||
dumpSnapshotAfterNBytes = 1024 * 1024 * 1024 // 1 GB
|
||||
dumpSnapshotAfterNBytes = 20 * 1024 // 1024 * 1024 * 1024 // 1 GB
|
||||
|
||||
writeBufferSize = 4 * 1024 * 1024
|
||||
)
|
||||
@@ -64,19 +64,18 @@ type Writer struct {
|
||||
indexPagesCount uint32
|
||||
dataFreeList *freelist.FreeList
|
||||
indexFreeList *freelist.FreeList
|
||||
//atree *atree.Atree
|
||||
dir string
|
||||
databaseName string
|
||||
w *bytes.Buffer // wal буфер для упаковки даних перед записом на диск
|
||||
wal *os.File
|
||||
dataFile *os.File
|
||||
indexFile *os.File
|
||||
input []any
|
||||
writePreparer *WritePreparer
|
||||
written int64
|
||||
isExited bool
|
||||
exitCh chan struct{}
|
||||
waitGroup *sync.WaitGroup
|
||||
dir string
|
||||
databaseName string
|
||||
w *bytes.Buffer // wal буфер для упаковки даних перед записом на диск
|
||||
wal *os.File
|
||||
dataFile *os.File
|
||||
indexFile *os.File
|
||||
input []any
|
||||
writePreparer *WritePreparer
|
||||
written int64
|
||||
isExited bool
|
||||
exitCh chan struct{}
|
||||
waitGroup *sync.WaitGroup
|
||||
}
|
||||
|
||||
type WriterOptions struct {
|
||||
@@ -225,7 +224,7 @@ func (s *Writer) packAndWrite() (err error) {
|
||||
prepared := s.writePreparer.Prepare(input)
|
||||
|
||||
//fmt.Printf("prepared: %#v\n", prepared)
|
||||
fmt.Println("prepared")
|
||||
//fmt.Println("prepared")
|
||||
|
||||
// 3. Пишу на диск WAL (append)
|
||||
n, err := s.wal.Write(prepared.Packet)
|
||||
@@ -239,7 +238,8 @@ func (s *Writer) packAndWrite() (err error) {
|
||||
if err = s.wal.Sync(); err != nil {
|
||||
return
|
||||
}
|
||||
fmt.Println("synced to wal")
|
||||
s.written += int64(len(prepared.Packet))
|
||||
//fmt.Println("synced to wal")
|
||||
|
||||
// 4. Пишу в atree сторінки
|
||||
if len(prepared.WriteToData) > 0 {
|
||||
@@ -250,7 +250,7 @@ func (s *Writer) packAndWrite() (err error) {
|
||||
if err = s.dataFile.Sync(); err != nil {
|
||||
return
|
||||
}
|
||||
fmt.Println("written to data")
|
||||
//fmt.Println("written to data")
|
||||
}
|
||||
if len(prepared.WriteToIndex) > 0 {
|
||||
err = WriteIndexPages(s.indexFile, prepared.WriteToIndex)
|
||||
@@ -260,7 +260,7 @@ func (s *Writer) packAndWrite() (err error) {
|
||||
if err = s.indexFile.Sync(); err != nil {
|
||||
return
|
||||
}
|
||||
fmt.Println("written to index")
|
||||
//fmt.Println("written to index")
|
||||
}
|
||||
// 6. відправляю input - worker-у
|
||||
|
||||
@@ -296,6 +296,8 @@ func (s *Writer) packAndWrite() (err error) {
|
||||
|
||||
snapshotNumber := <-snapshotNumberCh
|
||||
|
||||
//fmt.Println("got snapshot number:", snapshotNumber)
|
||||
|
||||
// копіюю сторінки із delta файла в base файл і потім роблю Truncate
|
||||
err = s.indexFreeList.Merge()
|
||||
if err != nil {
|
||||
@@ -305,6 +307,7 @@ func (s *Writer) packAndWrite() (err error) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
//fmt.Println("free lists merged")
|
||||
|
||||
var err error
|
||||
s.wal, err = os.OpenFile(
|
||||
@@ -315,11 +318,12 @@ func (s *Writer) packAndWrite() (err error) {
|
||||
if err != nil {
|
||||
return fmt.Errorf("create new changes file: %s", err)
|
||||
}
|
||||
//fmt.Println("new wal created")
|
||||
} else {
|
||||
s.workerInbox.Push(Changes{
|
||||
Commits: prepared.Commits,
|
||||
})
|
||||
fmt.Println("pushed commits")
|
||||
//fmt.Println("pushed commits")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user