in page.go [246:269]
func (p *Page) doFlush(op string) reason {
if !p.flags.dirty || p.flags.flushed {
return nil
}
if !p.flags.new {
if p.id == p.ondiskID {
walID := p.tx.allocWALID(p.id)
if walID == 0 {
const msg = "not enough space to allocate write ahead page"
return &Error{op: op, kind: OutOfMemory, ctx: p.errCtx(), msg: msg}
}
p.ondiskID = walID
} else {
// page already in WAL -> free WAL page and write into original page
p.tx.freeWALID(p.id, p.ondiskID)
p.ondiskID = p.id
}
}
p.flags.flushed = true
p.tx.scheduleWrite(p.ondiskID, p.bytes)
return nil
}