quicker to adapt to pattern change

This commit is contained in:
chrislu
2022-08-07 10:14:01 -07:00
parent 928d29af9e
commit 0aeec04c31
2 changed files with 16 additions and 4 deletions

View File

@@ -5,6 +5,8 @@ type ReaderPattern struct {
lastReadStopOffset int64
}
const ModeChangeLimit = 3
// For streaming read: only cache the first chunk
// For random read: only fetch the requested range, instead of the whole chunk
@@ -17,9 +19,13 @@ func NewReaderPattern() *ReaderPattern {
func (rp *ReaderPattern) MonitorReadAt(offset int64, size int) {
if rp.lastReadStopOffset == offset {
rp.isSequentialCounter++
if rp.isSequentialCounter < ModeChangeLimit {
rp.isSequentialCounter++
}
} else {
rp.isSequentialCounter--
if rp.isSequentialCounter > -ModeChangeLimit {
rp.isSequentialCounter--
}
}
rp.lastReadStopOffset = offset + int64(size)
}