mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
fix locating data chunks
This commit is contained in:
parent
72eb6d5b9d
commit
40dc283b2d
|
@ -40,7 +40,7 @@ debug_filer_copy:
|
||||||
|
|
||||||
debug_filer_remote_sync:
|
debug_filer_remote_sync:
|
||||||
go build -gcflags="all=-N -l"
|
go build -gcflags="all=-N -l"
|
||||||
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec weed -- -v=4 filer.remote.sync -filer="localhost:8888" -dir=/buckets/b2 -timeAgo=10000h
|
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec weed -- -v=4 filer.remote.sync -filer="localhost:8888" -dir=/buckets/b2 -timeAgo=1h
|
||||||
|
|
||||||
debug_master_follower:
|
debug_master_follower:
|
||||||
go build -gcflags="all=-N -l"
|
go build -gcflags="all=-N -l"
|
||||||
|
|
|
@ -237,10 +237,25 @@ func (c *ChunkStreamReader) prepareBufferFor(offset int64) (err error) {
|
||||||
|
|
||||||
// need to seek to a different chunk
|
// need to seek to a different chunk
|
||||||
currentChunkIndex := sort.Search(len(c.chunkViews), func(i int) bool {
|
currentChunkIndex := sort.Search(len(c.chunkViews), func(i int) bool {
|
||||||
return c.chunkViews[i].LogicOffset <= offset
|
return offset < c.chunkViews[i].LogicOffset
|
||||||
})
|
})
|
||||||
if currentChunkIndex == len(c.chunkViews) {
|
if currentChunkIndex == len(c.chunkViews) {
|
||||||
return io.EOF
|
// not found
|
||||||
|
if c.chunkViews[0].LogicOffset <= offset {
|
||||||
|
currentChunkIndex = 0
|
||||||
|
} else if c.chunkViews[len(c.chunkViews)-1].LogicOffset <= offset {
|
||||||
|
currentChunkIndex = len(c.chunkViews) -1
|
||||||
|
} else {
|
||||||
|
return io.EOF
|
||||||
|
}
|
||||||
|
} else if currentChunkIndex > 0 {
|
||||||
|
if c.chunkViews[currentChunkIndex-1].LogicOffset <= offset {
|
||||||
|
currentChunkIndex -= 1
|
||||||
|
} else {
|
||||||
|
return fmt.Errorf("unexpected1 offset %d", offset)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return fmt.Errorf("unexpected2 offset %d", offset)
|
||||||
}
|
}
|
||||||
|
|
||||||
// positioning within the new chunk
|
// positioning within the new chunk
|
||||||
|
|
Loading…
Reference in a new issue